随笔分类 - mysql学习
记录mysql学习历程
摘要:1. binlog dump线程何时向从库发送binlog mysql在server层进行了组提交之后,为了提高并行度,将提交阶段分为了 flush sync commit三个阶段,根据sync_binlog的不同,会在 flush阶段或者 sync阶段以更新binlog位置点的方式通知 dump
阅读全文
摘要:partial page write问题: 默认情况下,innodb的一个页面时16k大小,其数据校验也是针对这16k来校验的,将数据写入磁盘是以页面为单位的。文件系统是以4k为单位写入的,机械磁盘是以扇区【512字节】为单位写入的,因此不能保证一个16k的页面原子性写入。如果在刷新脏页的时候系统宕
阅读全文
摘要:mdl锁的主要作用是用来维护表元数据的一致性。在表上有活动事务的时候,不可以对表元数据进行修改操作。 如果没有MDL锁的保护,那么session2可以直接执行,并导致session1出错。 MDL锁是server层级的锁,每执行一条DDL DML语句事都会申请MDL锁,MDL加锁过程事系统自动控制,
阅读全文
摘要:《高性能 MySQL》描述:1. 通过两个隐藏列,一个保存行的创建时间,一个保存行的过期时间RR隔离级别:检索创建时间在当前事务版本号之前的数据,同时会检查数据的删除时间,保证新的删除操作不可见。select * from table where create_version <= ${versio
阅读全文
摘要:mysql中,使用explain可以模拟优化器执行sql语句,分析查询语句的性能瓶颈。 id:select查询的序号,表示的是查询中执行select子句的顺序。关注该字段获取sql语句各子句的执行顺序 1. id相同表示加载的顺序是从上到下 2. id值越大,优先级越高,越先被执行 select_t
阅读全文
摘要:当mysql开启binlog日志时,会存在一个内部XA的问题:事务在存储引擎层redo log的写入和binlog的写入一致性问题。 mysql通过两阶段提交很好的解决了redo log和binlog一致性问题: 第一阶段:innodb prepare, 持有prepare_commit_mutex
阅读全文