06 2019 档案

摘要:MySQL关联查询算法 BNL(Block Nested-Loop) ICP(Index Condition Pushdown) MRR(Multi-Range Read) BKA(Batched Key Access) BNL(Block Nested-Loop)场景:假设TB1和TB2进行关联查 阅读全文
posted @ 2019-06-30 22:40 TeyGao 阅读(206) 评论(0) 推荐(0) 编辑
摘要:MHA在选择新主库时,会将所有存活的从库分为下面几类: 选择新主库顺序 简单而言,选择新主库: 1、所有“非备选从库”都不会被选择成为新主库。 2、当存在”优选从库“时,选择”优选从库“中获得“主库BINLOG最多”从库为新主库。 3、当不存在”优选从库“时,选择“主库BINLOG最多”的从库成为新 阅读全文
posted @ 2019-06-29 13:04 TeyGao 阅读(299) 评论(0) 推荐(0) 编辑
摘要:MHA工作组件 MHA(Master High Availability)是一种MySQL高可用解决方案,由日本DeNA公司开发,主要用于在故障切换和主从提升时进行快速切换,并最大程度保证数据一致性。MHA主要由两部分组成:1、MHA Manager(管理节点),管理节点部署在群集之外,主要用于定期 阅读全文
posted @ 2019-06-29 10:59 TeyGao 阅读(4770) 评论(0) 推荐(0) 编辑
摘要:树结构 B树,即平衡二叉树,每个非叶子节点最多拥有两个子节点。所有键值出现在叶子节点和非叶子节点。 B-树,在B树上扩展出来的多路搜索树,每个非叶子节点可能包含N个子节点。所有键值出现在叶子节点和非叶子节点。 B+数,是B-数的变种,在所有叶子节点间增加链指针,且所有键值都出现在叶子节点。 B*数: 阅读全文
posted @ 2019-06-27 15:58 TeyGao 阅读(324) 评论(0) 推荐(0) 编辑
摘要:在MySQL跨版本升级时,建议使用mysqldump方式导出用户权限和用户数据,即使是小版本升级,导出过程中也应忽略系统数据库,避免系统表不兼容。 导出用户数据库脚本和用户创建脚本 导入用户数据库和用户脚本 阅读全文
posted @ 2019-06-26 19:13 TeyGao 阅读(1379) 评论(0) 推荐(0) 编辑
摘要:Seconds_Behind_Master计算原理 当从库上复制IO进程和复制SQL进程正常运行,且SQL线程处于执行状态而非等待IO进程同步BINLOG时,复制延迟时间计算如下: 上面变量中,从库系统时间和主库系统时间都是相对稳定的值,因此主从系统时间差相对稳定,在复制IO进程启动时计算,因此影响 阅读全文
posted @ 2019-06-26 08:33 TeyGao 阅读(566) 评论(0) 推荐(0) 编辑
摘要:复制延迟(Seconds_Behind_Master)测试 测试环境: MySQL 5.7.19 测试主从时间差: 在主库上执行(使用基于语句格式复制): 主库上上执行效果: 主库上生成的binlog解析结果: 从库上relay log解析结果: 从库上生成binlog解析结果(从库上默认binlo 阅读全文
posted @ 2019-06-24 19:31 TeyGao 阅读(615) 评论(0) 推荐(0) 编辑
摘要:本人完全不懂MySQL源码,以下文字纯属瞎猜,如有误导,概不负责!、 源码版本:MySQL 5.6.28 在sql/rpl_slave.cc文件中,time_diff的计算代码为: 1、当SQL线程停止时,返回NULL 2、当SLAVE正常运行时,如果SQL线程执行的位置是relay log的最后位 阅读全文
posted @ 2019-06-24 11:47 TeyGao 阅读(409) 评论(0) 推荐(0) 编辑
摘要:1、mysqld和mysqld_safe之间关系 2、mysql相关可执行文件 3、mysql服务启动时读取配置文件顺序 使用mysql --help可以看到mysql读取配置文件的顺序: 错误处理1: 错误处理2: 错误处理3: 阅读全文
posted @ 2019-06-21 19:25 TeyGao 阅读(305) 评论(0) 推荐(0) 编辑
摘要:MySQL 编译相关选项配置和说明 [MySQL安装的根目录] -DCMAKE_INSTALL_PREFIX=/export/servers/mysql/ [MySQL数据库文件存放目录] -DMYSQL_DATADIR=/export/data/mysql/data/ [MySQL配置文件所在目录 阅读全文
posted @ 2019-06-21 19:08 TeyGao 阅读(360) 评论(0) 推荐(0) 编辑
摘要:准备测试数据: 测试1: 上面操作执行后,使用SHOW ENGINE INNODB STATUS查看锁信息 上面事务加两个锁: 1、表上加意向修改锁(IX)。 2、在新插入的记录上加行锁(RECORD LOCKS ..lock_mode X locks rec but not gap) 测试2: 上 阅读全文
posted @ 2019-06-20 16:34 TeyGao 阅读(1315) 评论(0) 推荐(0) 编辑
摘要:准备测试数据: 测试1: 使用SHOW ENGINE INNODB STATUS 查看,输出锁信息为: 加锁详解: 阅读全文
posted @ 2019-06-20 11:20 TeyGao 阅读(169) 评论(0) 推荐(0) 编辑
摘要:准备测试数据: 测试1: 锁阻塞信息如下: 绿色部分表示申请锁成功,黄色部分表示申请锁被阻塞。 使用SHOW ENGINE INNODB STATUS 查看,输出锁信息为: 加锁详解: Record LOCK, HEAP NO 3 PHYSICAL RECORD: n_fields 5; COMPA 阅读全文
posted @ 2019-06-20 10:48 TeyGao 阅读(643) 评论(0) 推荐(0) 编辑
摘要:当MySQL连接被打满,连管理员也无法本地登录时,可以考虑使用tcpkill杀掉一些应用服务器创建的连接。 查看数据库连接主要来自那些应用服务器 ## 按照IP查看连接数前10的应用服务器 netstat -ano | grep 3306 | \ awk '{print $5}'|awk -F':' 阅读全文
posted @ 2019-06-19 00:08 TeyGao 阅读(1042) 评论(0) 推荐(0) 编辑
摘要:经常被问,NOT IN和<>操作就无法走索引? 真想只有一个:具体问题具体分析,没有前提的问题都是耍流氓。 准备测试数据: 表中tb2001上C1列上有索引,全表数据10万条,但c1<>1的数据仅为20条。 查询c1不为1的10条数据,NOT IN 方式执行计划为: 查询c1不为1的10条数据,<> 阅读全文
posted @ 2019-06-18 18:31 TeyGao 阅读(11828) 评论(0) 推荐(1) 编辑
摘要:某系统反馈慢SQL影响生产,查看SLOW LOG发现下面慢SQL: 设计表上索引情况如下: 查看执行计划为: 本着直觉判定使用索引ix_SEND_FLAG但影响行数为54292步骤存在问题,虽然过滤条件中包含SEND_FLAG=0且列SEND_FLAG上有索引,但选择性较差,初步断定查询走错索引导致 阅读全文
posted @ 2019-06-18 17:43 TeyGao 阅读(348) 评论(0) 推荐(0) 编辑
摘要:在事务插入数据过程中,为防止其他事务向索引上该位置插入数据,会在插入之前先申请插入意向范围锁,而如果申请插入意向范围锁被阻塞,则事务处于gap before rec insert intention waiting的等待状态。 MySQL官方文档解释如下: 准备测试数据: 先执行事务(事务13286 阅读全文
posted @ 2019-06-17 23:33 TeyGao 阅读(5611) 评论(0) 推荐(1) 编辑
摘要:查看表主键信息 查看无主键表 无主键表 在Innodb存储引擎中,每张表都会有主键,数据按照主键顺序组织存放,该类表成为索引组织表 Index Ogranized Table 如果表定义时没有显示定义主键,则会按照以下方式选择或创建主键: 如果主键索引只有一个索引键,那么可以使用_rowid来显示主 阅读全文
posted @ 2019-06-16 23:37 TeyGao 阅读(1437) 评论(0) 推荐(0) 编辑
摘要:参数说明 innodb_flush_log_at_trx_commit和sync_binlog 两个参数是控制MySQL 磁盘写入策略以及数据安全性的关键参数,不同参数设置对磁盘IO影响不同。 参数innodb_flush_log_at_trx_commit 图片来源于:https://www.h3 阅读全文
posted @ 2019-06-14 16:07 TeyGao 阅读(2019) 评论(0) 推荐(0) 编辑
摘要:分区表历史 分区策略 MySQL 5.7分区增强 分区表优点 分区表缺点 个人见解 对于SQL Server和Oracle这些商业数据库,由于商业授权导致横向扩展成本较高,且分区表功能稳定,因此通过硬件扩展和分区来承担大数据量带来的负载,而对于MySQL,互联网企业有资源有能力将很多需求迁移到数据库 阅读全文
posted @ 2019-06-12 22:35 TeyGao 阅读(6916) 评论(0) 推荐(0) 编辑
摘要:初始化数据: 查看当前表中数据: 测试1: 上面测试中发现: 1、where c2=1429.5 or c2<1429.5 与 where c2<=1429.5 和 where c2=1429.5查询结果相同 2、where c2<=1429.5的查询结果中不包含where c2=1429.5的查询 阅读全文
posted @ 2019-06-12 16:23 TeyGao 阅读(282) 评论(0) 推荐(0) 编辑
摘要:在MySQL中,无论是字符串转换为时间还是时间转换为字符串,都需要使用到时间格式: 日期或时间转换为字符串: 字符串转时间: 不同国家使用不同的时间格式,可以使用get_format函数获取默认时间格式。 get_format函数用法: 如获取USA的默认时间格式 阅读全文
posted @ 2019-06-10 23:46 TeyGao 阅读(429) 评论(0) 推荐(0) 编辑
摘要:隐式类型转换 在官方文档中对隐式类型转换规则有如下描述: 翻译为中文: 由于Float是浮点数,在MySQL中存储的是近似值,当不指定Float的长度和小数位数时,无法使用精确查找进行匹配,执行返回数据为空,查询显示警告信息Empty set。 解决办法: 浮点数近似值问题演示: 阅读全文
posted @ 2019-06-10 23:21 TeyGao 阅读(293) 评论(0) 推荐(0) 编辑
摘要:MegaRAID信息查看 HP RAID信息查看 MegaRAID修改写缓存 HP RAID修改写缓存 简易版的RAID检查脚本: 阅读全文
posted @ 2019-06-07 20:54 TeyGao 阅读(543) 评论(0) 推荐(0) 编辑
摘要:MegaCli查看RAID级别: RAID 5输出: 服务器上配置8块300GB的HDD盘,其中使用7块做数据盘(RAID5),因此Number Of Drives为7,而Span Depth为1,剩余1块盘做热备盘,当数据盘发生故障后,热备盘会自动替换发生故障的数据盘,而故障盘被新盘替换后,新盘作 阅读全文
posted @ 2019-06-07 19:47 TeyGao 阅读(749) 评论(0) 推荐(0) 编辑
摘要:RAID卡缓存策略 不同的RAID卡缓存策略对IO的性能影响较大,常见的策略有: 1、写操作策略,可设置为WriteBack或WriteThrough 2、读操作策略,可选参数:ReadAheadNone, ReadAdaptive, ReadAhead。 3、缓存策略,可选参数: Direct, 阅读全文
posted @ 2019-06-07 16:23 TeyGao 阅读(696) 评论(0) 推荐(0) 编辑
摘要:1、DDL操作与Xtrabackup备份冲突 当MySQL使用xrabckup进行备份时,如果执行DDL进行表修改,会导致xrabckup备份失败。 错误类似于: 2、磁盘性能太差导致xtrabckup备份失败 Innodb产生日志的速度远超于Xtrabackup复制的速度,部分Innodb日志被截 阅读全文
posted @ 2019-06-06 18:16 TeyGao 阅读(1479) 评论(0) 推荐(0) 编辑
摘要:Xtrabackup备份参数 参数选项: Xtrabackup备份常用参数 --apply-log应用备份文件夹中名为xtrabackup_logfile的事务日志,并根据名为backup-my.cnf的配置文件来创建新的事务日志文件。--redo-only当需要增量还原时配合--apply-log 阅读全文
posted @ 2019-06-06 18:12 TeyGao 阅读(688) 评论(0) 推荐(0) 编辑
摘要:在innobackupex 2.4版本中,有两个参数用来限制备份速度: 在percoan官方网站上对throttle参数有如下解释: 如果想将备份速度控制在50MB/s以下的话,那么throttle参数需要设置为5,使用该参数备份开始后IO使用情况为: 备份进程一直在写xtrabackup_logf 阅读全文
posted @ 2019-06-06 13:38 TeyGao 阅读(2215) 评论(0) 推荐(0) 编辑
摘要:使用xbstream 备份到远程服务器 使用tar备份到远程服务器 本地限速备份(使用PV限速) 阅读全文
posted @ 2019-06-05 17:03 TeyGao 阅读(4583) 评论(0) 推荐(0) 编辑
摘要:备份脚本: innobackupex \--defaults-file="/export/servers/mysql/etc/my.cnf" \--host="localhost" \--port=3358 \--user='admin' \--password='admin_psw' \--sla 阅读全文
posted @ 2019-06-05 14:52 TeyGao 阅读(801) 评论(0) 推荐(0) 编辑
摘要:在MySQL 5.7版本中引入Online DDL特性和共享临时表空间特性,临时数据主要存放形式为: 1、DML命令执行过程中文件排序(file sore)操作生成的临时文件,存储目录由参数tmpdir控制,以MY开头2、超大事务提交生成binary log过程中用于数据缓存的临时文件,存储目录由参 阅读全文
posted @ 2019-06-03 18:38 TeyGao 阅读(2378) 评论(0) 推荐(0) 编辑