高性能MySQL
文章平均质量分 82
高性能MySQL学习笔记
G::A
这个作者很懒,什么都没留下…
展开
-
高性能MySQL —— 存储引擎
innodb_file_per_table:每张表都建立一个表空间。page是磁盘操作的最小单元,区大小固定为1M,页大小固定为16K.通过API与服务器交互。是存储数据、更新查询数据、建立索引的实现方式。支持hash索引,存放在内存中,速度快。兼顾了高可靠和高性能。适用于改、删多的场景。适用于仅需增、删场景。原创 2023-08-18 13:41:02 · 131 阅读 · 0 评论 -
高性能MySQL —— 并发控制
当执行一个UPDATE或DELETE操作并且命中了索引(无论是唯一索引还是非唯一索引),InnoDB会尝试仅仅对满足条件的那些行加锁。对于非唯一索引,会对查询结果范围左侧的间隙和右侧的间隙加间隙锁(避免重复值的插入)bin log是实现主从复制的核心,主服务器上的所有数据更改(在Binary Log中记录)会被复制到从服务器。脏页是指还未来的及刷新到磁盘的buffer pool中的数据。update读的是当前(最新的)。正是MVCC的存在,MySQL在可重复读的隔离级别解决了幻读问题。原创 2023-08-18 09:51:08 · 352 阅读 · 1 评论 -
高性能MySQL —— SQL优化
innoDB采取逻辑删除的方式。当一个页中被标记删除的节点达到阈值(默认50%)。会尝试页合并,即如果逻辑上相邻的页能与当前页合并成一整个页就会合并。优化原则:order by的内容应尽量符合索引顺序的正序或倒序【注要么一起倒序要么一起正序】。否则将会 using filesort:指利用内存中的缓冲区/或磁盘对查询结果进行重排序。页的节点可以为空,也可以占一半空间,也可以占满空间。MyISAM引擎将表的总数存储在磁盘上,故无条件count(*)时效率高。核心思想:1. 需要判断是否为null的最慢。原创 2023-08-14 14:21:28 · 116 阅读 · 0 评论 -
高性能MySQL —— 索引
MySQL会尽量将更多的查询条件推送到索引搜索过程中,这样在从索引中检索数据时就可以更早地过滤掉不匹配的记录,从而减少从表中检索的行数。【也就是说,即使非索引条件,也会代入到索引的B+树中进行判断比较,以减少回表次数,即下推到执行引擎去做】这显然是利用了mysql过多的索引失效情况的特性而进行的优化。缺失时,按索引顺序之后的列索引失效】,如果某一列缺失,那么查询条件第一次不匹配的列及之后的列将。二级索引,叶子节点上挂的是主键,而不是row数据。索引可以关联多个字段,分为组合索引和单例索引。原创 2023-08-12 19:08:28 · 143 阅读 · 2 评论