数据库学习-性能调优

诸葛,事物 ,MVCC,日志 (BufferPool缓存机制)

1.索引数据结构红黑树、Hash、B+树详解

  • 慢sql查询,优化sql手段:添加索引
  • 索引是帮助mysql 高效获取数据的排好序数据结构
  • 索引数据结构:
    1. 二叉树
    2. 红黑树
    3. Hash表
    4. B-Tree

2.存储引擎

2.1 MyISAM

MyISAM索引文件和数据文件是分离的(非聚集索引)

数据库中的表是以文件的形式存放在磁盘中

  • -frm :表结构
  • -MYD :表数据
  • -MYI : 表索引 ,底层B+树,里面子叶有存储value(索引所在行的磁盘地址),然后根据value地址可以去MYD文件中查找对应数据
2.2 InnoDB

索引文件和数据文件是放在一起的,所以InnoDB的主键索引是聚集索引,聚集索引查找效率高些;它的其它二级索引是非聚集索引,子页存放的是对应主键的列值。一张有且仅有一个聚集索引,InnoDB表必须建立主键,使用整型(使用整型的原因:由于数字作为主键,底层使用二叉树对数字”比较查找“效率比字符串快,整型可以节省磁盘空间,因此字符串不适合做主键)自增主键

数据库中的表是以文件的形式存放在磁盘中

  • -frm : 表结构
  • -ibd : 表索引和数据

3.聚集索引、覆盖索引和索引下推

  • 索引最左前缀原则(必须使用建立索引的顺序,不能跳过其中一个索引,而使用后面的那个索引,如果跳过,使用右边的索引,那么使用这个去查找,就不是排好序的数据了,这就相当于要把整张表的所有索引都要找一便,那这跟全表扫描就区别不太,整个sql的查询性能也没得到提高,用户的体验感也降低)

    这样使用索引最左前缀原则,就能高效的定位索引找数据

  • BufferPool 缓存池

  • 索引规约:

    • 超过三张表禁止 join ,少用连表,尽量单表
    • 单表索引数量控制5个以内
    • 不允许存在重复索引和冗余索引
    • 防止字段隐式转换导致的索引失效
    • SQL优化目标:至少到达range 级别
    • 利用覆盖索引避免回表操作
    • 禁止超过三个表的join
    • 在varchar 上建立索引,指定索引长度
    • 索引字段值不允许设置为null,必须设置默认值
    • 单表数据量控制在1000w 以内
    • 字段列数量建议在30以内
    • 不建议使用MySQL分区表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UPYOLo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值