08 2019 档案
摘要:将大于或小于的范围查询装换为等值查询 在生产环境,经常会遇到需要对Worker表进行多次尝试的业务,超过一定重试次数后抛弃或使用其他方式处理,在查找满足重试条件数据时,通常会使用“小于”运算符并伴随排序操作,这种场景很容易出现性能问题。 如下面查找执行次数小于最大执行次数的记录的SQL: 表中数据分
阅读全文
摘要:在MySQL 5.7版本中使用mysqldump导出数据时,如果未显式指定set-gtid-purged参数,会报下面错误: mysqldump帮助文档中说明如下: 未设置set-gtid-purged或设置set-gtid-purged=ON时,其导出脚本为: 设置set-gtid-purged=
阅读全文
摘要:当MySQL服务器出现性能问题时,应该优先排查未提交事务,除可以查询相关系统表外,还可以观察SHOW INNODB STATUS的输出结果来确认未提交事务。 首先查看InnoDB事务的History list length,如果该值就大,则很有可能存在未提交事务: 对于未开始的事务,其描述为: 对于
阅读全文
摘要:延迟写 传统的UNIX实现在内核中设有缓冲区高速缓存或页面高速缓存,大多数磁盘I/O都通过缓冲进行。当将数据写入文件时,内核通常先将该数据复制到其中一个缓冲区中,如果该缓冲区尚未写满,则并不将其排入输出队列,而是等待其写满或者当内核需要重用该缓冲区以便存放其他磁盘块数据时,再将该缓冲排入输出队列,然
阅读全文
摘要:数据库表空间 独立表空间 在MySQL 5.6 中引入独立表空间的概念,启用独立表空间后,每个表将生成独立的文件来进行存储。 创建表时可以指定表存放的文件路径 共享表空间优缺点 独立表空间优缺点
阅读全文
摘要:启用performance schema 配置performance schema performance schema对象 performance schema表
阅读全文
摘要:MHA主库检查参数 MHA从0.53版本开始支持ping_type参数来设置如何检查master可用性:ping_type=select: 基于一个到master的已经存在的连接执行select 1,连接被重复使用,select检查能快速返回结果,但检查过于简单,无法发现更多故障。ping_type
阅读全文
摘要:UTF8和UTF8MB4 在早期MySQL版本中,使用只支持最长三字节的UTF8字符集便可以存放所有Unicode字符。随着Unicode的完善,Unicode字符集收录的字符数量越来越多,最新版本的UTF8需要使用1到4个字节来存放Unicode字符,而MySQL为保持版本兼容,依旧使用最多3字节
阅读全文
摘要:ENUM约束 默认值约束 外键约束 MYSQL 对外键约束只支持即时检查(immediate check), 与SQL SERVER 相同。 ORACLE 对外键约束支持延时检查(deferred check)。 在创建外键约束时,MYSQL 默认为外键约束列添加索引,以避免外键约束带来的死锁问题。
阅读全文
摘要:三值逻辑(Three Value Logic) 在关系型数据库中,由于NULL值的存在,导致逻辑表达式存在三种值:TRUE/FALSE/UNKNOW。 NULL值表示不确定或未知的值,因此NULL值是否等于或不等于某个特定值,只能使用IS NULL或IS NOT NULL来判断。 NULL值处理 在
阅读全文
摘要:事故回溯 某业务流程操作为: 由于业务需求变更,研发同事申请向处理结果表上新增一个NOT NULL的列,但没有为该列设置默认值,数据库运行在严格模式下,DDL执行成功后,业务系统未及时上线,仍使用原有代码继续执行,在执行到步骤2向处理结果表插入记录时抛出异常,导致流程操作失败并循环重试,知道所有资源
阅读全文
摘要:问题描述 研发同事反馈某应用执行较慢,对应SQL为: 表bs_serial_trac上索引情况为: 由于使用OR条件,查询只能基于条件GOODS_NO = '4418095740626' 进行数据查找,其执行计划为: 由于GOODS_NO列选择性较差,满足条件的记录较多,导致查询性能较差: 解决步骤
阅读全文