yyz notes yyz notes
首页
  • RBAC权限设计
  • 架构图标设计
  • 账号体系
  • python基础
  • python高级
  • python模块
  • python设计模式
  • python数据结构与算法
  • django
  • django-DRF
  • flask
  • 直接设计开源pip包
  • 直接设计开源项目
  • python示例题/脚本
  • python面试题
  • golang基础
  • golang高级
  • golang常用组件
  • gin框架
  • es6
  • javascript
  • react
  • vue
  • TypeScript
  • mysql
  • redis
  • minio
  • elasticsearch
  • mongodb
  • 消息队列
  • 自动化测试
  • 操作系统

    • linux
    • windows
  • nginx
  • docker
  • k8s
  • git
  • ldap
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

益章

可乐鸡翅
首页
  • RBAC权限设计
  • 架构图标设计
  • 账号体系
  • python基础
  • python高级
  • python模块
  • python设计模式
  • python数据结构与算法
  • django
  • django-DRF
  • flask
  • 直接设计开源pip包
  • 直接设计开源项目
  • python示例题/脚本
  • python面试题
  • golang基础
  • golang高级
  • golang常用组件
  • gin框架
  • es6
  • javascript
  • react
  • vue
  • TypeScript
  • mysql
  • redis
  • minio
  • elasticsearch
  • mongodb
  • 消息队列
  • 自动化测试
  • 操作系统

    • linux
    • windows
  • nginx
  • docker
  • k8s
  • git
  • ldap
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • MySQL

    • 安装MySQL
    • MySql事务
    • MySQL锁
    • MySQL索引
    • MySQL慢查询
    • MySQL优化
      • 1.1 优化方向
      • 1.2 MySQL优化
      • 2.1 MySQL索引优化
      • 2.2 MySql分库分表
    • MySQL主从同步
    • mysql主从配置与实战
    • MySQL管理
    • MySQL基本查询
    • mysql基础
    • sql语句面试50题
    • FAQ
  • Redis

  • Elasticsearch

  • MongoDB

  • 消息队列

  • 数据存储
  • MySQL
YiZhang-You
2023-05-01
目录

MySQL优化

# 01.MySQL优化方向

# 1.1 优化方向

  1. 存储引擎的选择:INnoDB MyISAM
  2. 设计数据库的设计,尽量的遵循三范式
  3. 适当的建立索引
  4. 查询数据的时候,注意 ... 这些
  5. 使用explain检查索引命中率,分析这一条sql语句是否可优化
  6. 数据量大的时候,主从分离、分库分表、垂直/水平分割
  7. 尽量采用 贵的,SSD硬盘。不选择机械硬盘
  8. 一个和你项目有关数据库优化的例子

# 1.2 MySQL优化

  • 什么是MySQL的慢查询?
  • 如何去分析 慢查询的日志?
  • 遇到了慢查询如何解决?(最好有故事)
  • 索引的建立是越多越好?为什么不是越多越好?
  • 一个精彩的故事

# 02.简单说明

# 2.1 MySQL索引优化

# 1、最左前缀匹配原则,上面讲到了
# 2、主键外键一定要建索引
# 3、对 where,on,group by,order by 中出现的列使用索引
# 4、尽量选择区分度高的列作为索引,区分度的公式是count(distinct col)/count(*),表示字段不重复的比例,
# 5、为较长的字符串使用前缀索引

'''
# 6、不要过多创建索引, 权衡索引个数与DML之间关系,DML也就是插入、删除数据操作。
    这里需要权衡一个问题,建立索引的目的是为了提高查询效率的,但建立的索引过多,
    会影响插入、删除数据的速度,因为我们修改的表数据,索引也需要进行调整重建
'''

'''
# 7、对于like查询,”%”不要放在前面。
    SELECT * FROMhoudunwangWHEREunameLIKE'后盾%' -- 走索引 
    SELECT * FROMhoudunwangWHEREunameLIKE "%后盾%" -- 不走索引
'''

'''
# 8、查询where条件数据类型不匹配也无法使用索引 
    字符串与数字比较不使用索引; 
    CREATE TABLEa(achar(10)); 
    EXPLAIN SELECT * FROMaWHEREa="1" – 走索引 
    EXPLAIN SELECT * FROM a WHERE a=1 – 不走索引 
    正则表达式不使用索引,这应该很好理解,所以为什么在SQL中很难看到regexp关键字的原因
'''
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

# 2.2 MySql分库分表

了解内容,不作为学习重点

  • mysql一主多从,读写分离:写主库,读从库(所有数据库的数据一样)
    • 数据一样的,那么当数据量太大的时候查询还是很慢
  • 分库(根据用户id分库)
    • 所有数据库的表结构一样,存储的数据完全不一样
    • 真实环境以用户id进行分库,每一个库的数据都很小,查询起来就快了
    • 无法解决问题:当一个数据库中表中量过大的时候,查询依然会慢
  • 分表(根据时间分表)
    • 当一个表中数据过大的时候,我们必须要对表拆分
    • 购物清单表中有两千万数据
      • 最近半年的购物数据时 一百万
      • 半年到一年的数据有五百万
      • 一年以前的数据有一千万
编辑 (opens new window)
上次更新: 2023/05/17, 23:08:21
MySQL慢查询
MySQL主从同步

← MySQL慢查询 MySQL主从同步→

最近更新
01
配置yun源
05-24
02
linux-配置python虚拟环境
05-24
03
linux文件目录管理
05-24
更多文章>
Theme by Vdoing | Copyright © 2023-2023 yizhang | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式