![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MYSQL常用知识分类
happy曾帅
这个作者很懒,什么都没留下…
展开
-
MySQL中利用log file 和position来复制
基于log file和position的数据库复制准备条件:Centos虚拟机1的IP:192.168.28.128;Centos虚拟机2的IP:192.168.28.129; 主机上的操作1、 主机上添加授权用户:mysql> grant all on *.* to ‘zeng1’@’192.168.28.129’identified by ‘zxz’;2、原创 2016-09-13 16:02:21 · 703 阅读 · 0 评论 -
mysql中的double write机制分析
介绍double write之前我们有必要了解partial page write问题:InnoDB的page size一般是16KB,其数据校验也是针对这16KB来计算的,将数据写入到磁盘以Page为单位进行操作的,其实。,如果磁盘是以16KB的速度写入的哈,是没有这方面的问题的,根本就用不到double write功能,但事实一般不是这样,目前一般是以512字节写入,例如只写入了4K时,发...原创 2019-06-27 16:46:33 · 340 阅读 · 0 评论 -
InnoDB行记录格式总结
在早期的innodb版本中,由于文件格式只有一种,但随着innodb引擎的发展,开发出了兼容早期版本的新文件格式,用于支持新的功能,因此InnoDB开始使用命名的文件格式Antelope:先前命名的,原始的InnoDB文件格式,支持两种行格式,compact和redundant, Barracuda:新的文件格式,它支持innoDB的所有行格式,而且包括新的行格式:compressed和dy...原创 2019-06-27 11:01:04 · 167 阅读 · 0 评论 -
:在主从服务器上,同一个表的表空间文件(idb文件)大小相差特别大,可能原因是什么,怎么解决?
可能的原因:1、MySQL表默认是InnoDB引擎且目前索引只支持B+树索引,在数据的增删改过程中,会导致表产生碎片,主从服务器上同张表的碎片率不同也会导致表空间相差很大2、主从表结构不一致,如从库可能比主库多索引3、主从表的行格式不一致,如主库为dynamic,从库为compressed4、个别云数据库在从库上可能采用特殊的并行复制技术,导致在从库上有更高的碎片率(有个极端的案例...原创 2019-06-27 09:40:40 · 737 阅读 · 0 评论 -
mysql中覆盖索引、联合索引、索引下推区别
1、覆盖索引:如果查询条件使用的是普通索引(或是联合索引的最左原则字段),查询结果是联合索引的字段或是主键,不用回表操作,直接返回结果,减少IO磁盘读写读取正行数据2、最左前缀:联合索引的最左 N 个字段,也可以是字符串索引的最左 M 个字符3、联合索引:根据创建联合索引的顺序,以最左原则进行where检索,比如(age,name)以age=1 或 age= 1 and name=‘张三’...原创 2019-06-26 11:04:54 · 12238 阅读 · 0 评论 -
InnoDB引擎表和myisam引擎表的区别
1、表锁差异myisam只支持表级锁,,innodb支持事务和行级锁,是innodb最大的特色,2、数据文件差异myisam属于堆表,myisam在磁盘存储上有三个文件,每个文件名以表名开头,扩展名指出文件类型。.frm 用于存储表的定义.MYD 用于存放数据.MYI 用于存放表索引innodb有两种存储方式,共享表空间存储和独立表空间存储3、索引...原创 2019-06-17 17:13:45 · 276 阅读 · 0 评论 -
redo buffer刷盘时机
1、每秒的master调用帧栈2、master线程每秒checkpoint调用3、page clean线程调用4、当前线程commit调用帧栈;5、innodb shutdown6、redo buffer不足...原创 2019-06-17 16:31:22 · 441 阅读 · 0 评论 -
gtid相关的设置
1、mysql.gtid_executed表修改时机在reset master时候会清空本表; 在set global gtid_purged的时候会设置本表;2、gtid_executed变量修改时机;在reset master时候会清空本变量; 在set global gtid_purged的时候会设置本变量; 在mysql启动的时候初始化设置gitd_exe...原创 2019-06-17 16:29:54 · 549 阅读 · 0 评论 -
mysql的数据盘为什么要做raid10
1、如果数据库的数据存储是nvmeflash卡,则直接使用,无需做任何raid;2、如果是sata盘,则根据是否满足性能需求而定。如果在实际使用中无法满足性能需求,则需要raid0,此外,虽然PaaS组件会有数据的多副本,在这种情况下也需要做好单机的数据保护,综合起来,所以需要raid10;...原创 2019-06-17 16:28:41 · 450 阅读 · 0 评论 -
为什么long_query_time设置了1秒,slow log中还会记录小于1秒的慢查询?
1、设置了全局的long_query_time未对当前mysql连接生效,2、打开了log_queries_not_using_indexes选项,记录了未走索引的SQL原创 2019-06-25 09:14:11 · 755 阅读 · 0 评论 -
MySQL已启用了slow query log且long_query_time=0.01,为什么有些慢SQL还是没被记录呢
1、在线动态设置long_query_time=0.01,但该设置对当前已建立的连接不会生效2、log_slow_admin_statements=0,因此ALTER、CREATEINDEX、ANALYZETABLE等操作即使超过long_query_time不会记录3、min_examined_row_limit设置非0值,SQL检查行数未超过该值不会记录4、slowlo...原创 2019-06-20 11:36:56 · 888 阅读 · 0 评论 -
MySQL之group by 优化(1)
满足GROUP BY子句的最一般的方法是扫描整个表并创建一个新的临时表,表中每个组的所有行应为连续的,然后使用该临时表来找到组并应用累积函数(如果有)。在某些情况中,MySQL能够做得更好,即通过索引访问而不用创建临时表。执行GROUP BY子句的最一般的方法:先扫描整个表,然后创建一个新的临时表,表中每个组的所有行应为连续的,最后使用该临时表来找到组并应用聚集函数(如果有聚集函数)。原创 2016-08-26 16:04:53 · 656 阅读 · 0 评论 -
MySQL之order by 优化(1)
在多数情况下,可以通过索引来简化order by的操作,而不需要额外的using filesort来重新进行排序,但是order by中出现的排序的列需要满足最左前缀索引,注意(个人实操结果):当所选取的列,即select中出现的列不出现在order by中索引的时候,则不会对ordr by 进行优化,即所选取的列与order by待排序的列是一致的,不然仍然会使用using filesort原创 2016-08-26 14:33:29 · 556 阅读 · 0 评论 -
MySQL中的聚集索引和辅助索引知识详解
具体的文档参考官方文档15.8.91.当你定义一个主键时,InnnodDB存储引擎则把它当做聚集索引2.如果你没有定义一个主键,则InnoDB定位到第一个唯一索引,且该索引的所有列值均飞空的,则将其当做聚集索引。3如果表没有主键或合适的唯一索引INNODB会产生一个隐藏的行ID值6字节的行ID聚集索引,补充:由于实际的数据页只能按照一颗B+树进行排序,因此每张表只能有一个聚集索引,原创 2016-08-25 15:43:11 · 10117 阅读 · 0 评论 -
mysql的锁机制(1)
MySQL的InnoDB中什么情况下需要使用表锁。。1.事务需要更新大部分或全部数据,表又比较大,如果使用默认的行锁,不仅这个事务执行效率低,而且造成其他事务长时间等待和锁冲突,这种情况下可以考虑使用表锁来提高该事务的执行速度。2,事务设计多个表,比较复杂,很可能引起死锁,造成大量的事务回滚,这种情况也可以考虑一次性锁定事务设计的表,从而避免死锁,原创 2016-08-24 17:29:40 · 291 阅读 · 0 评论 -
Mysql中的explain执行计划详解(1)
创建一个表test_explain,并添加入下的数据mysql> create table test_explain( a int primary key, b int);Query OK, 0 rows affected (0.09 sec)mysql> insert into test_explain value(1,1),(2,2),(3,3),(4,4),(5,5);ex原创 2016-08-24 15:39:06 · 477 阅读 · 0 评论 -
拷贝data文件恢复主从详细步骤
关闭从库的agent; 进入从库数据库执行stop slave; 关闭从库数据库; 将从库的整个mysql_data目录mv成mysql_data.old 关闭主库agent(防止心跳写入),同时防止应用向主库写入,即应当保持主库的这个值不再变化;将主库的mysql_data目录拷贝到从库; 启动主库agent; 去从库的data目录下面删除auto.cnf参数 启动...原创 2019-08-13 17:21:13 · 365 阅读 · 0 评论