- 博客(5)
- 收藏
- 关注
原创 MySQL优化器参数prefer_ordering_index优化理念
1、我们知道MySQL 5.7已经由了MRR的特性,通过把主键放到read_rnd_buffer中进行递增排序,然后把排序后的id数据整体去主键索引中检索数据,这样已经把原本回表的离散io转换成了顺序io,极大的降低了回表的代价,提高了回表的效率,尤其是limit n当n比较小的时候,这个时候开启这个参数,会减少由于优化器认为回表代价高导致不走索引而选择全表扫描;2、但是该参数存在bug,当limit n中的n比较小的时候,导致优化器直接选择走order by上的索引,忽略了选择性更高的其他索引;
2024-11-08 16:23:18
1062
原创 show slave status 详解 【MySQL5.7】
Relay_Master_Log_File: mysql-bin.000032 #正在执行到的主库上的binlog文件名【反映从库SQL_thread执行进度】Read_Master_Log_Pos: 1717 #正在读取到的主库的pos【反映从库IO_thread执行进度】Exec_Master_Log_Pos: 1717 # 当前执行到的主库的pos【反映从库SQL_thread执行进度】以MySQL5.7.19为例,部分重要的地方用红色标注了。
2024-03-25 15:06:54
428
1
原创 物理读和逻辑读
逻辑读:将数据从buffer cache内存读取到PGA给用户的过程。物理读:将数据从磁盘上的文件写入到buffer cache的过程;
2024-01-22 10:35:31
578
原创 PostgreSQL的MVCC vs InnoDB的MVCC
老版本存储到回滚段(注意,回滚段中的数据仅包含更改值,即delta value),同时新版本行记录中的回滚指针指向回滚段中的老版本。即使所有记录都是dead状态,PostgreSQL的顺序扫描也会扫描对象所有的老版本,直到执行vacuum将dead的记录删除。PostgreSQL仅更新tuple老版本的xmax,因此老版本的大小和相应插入的记录大小相同。同理,第三步,删除T1然后将其标记为虚拟删除(仅在行记录指定的一个bit位上打上delete标签)并在回滚段中插入一个对应的新版本。
2024-01-09 15:20:16
389
原创 InnoDB存储引擎有三大特性
InnoDB存储引擎有三大特性非常令人激动,它们分别是插入缓冲、两次写和自适应哈希 innodb 关键特性其中之二 写缓存是为了提升写性能,两次写为了提升可靠性 change buffer innodb引擎是索引组织表,所有记录都放在聚集索引里,因此其辅助索引中的记录地址存放的主键的键值。 它是一种特殊的数据结构,缓存对二级索引页面的更改并且这些页面不在buffer pool中。缓存的changes可能由insert、delete和update 的结果导致。稍后在页面被其他读取操作加载到 buffer po
2022-07-21 15:11:47
1379
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人