检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
慢日志显示SQL语句扫描行数为0 场景描述 查询慢日志中记录SQL执行65秒,但是扫描行数为0。 原因分析 被中断的查询超过慢日志设置阈值也会记录慢日志,但是所记录的扫描行数为0。客户JDBC连接设置了查询超时: 解决方案 优化SQL或者将sockTimeOut设置合理值。
特性支持场景 并行查询支持以下场景: 支持全表扫描、索引扫描、索引范围扫描、索引逆序扫描、索引点查询、索引下推等。 支持单表查询、多表JOIN、视图view、子查询,部分CTE查询等。
Backward Index Scan Backward Index Scan为反向索引扫描,可以通过反向扫描索引的方式消除排序,由于反向扫描与其他一些特性(例如: Index Condition Pushdown(ICP))不兼容,导致优化器选择Backward Index Scan
多表连接场景下DISTINCT优化 对于多表连接+DISTINCT场景,MySQL 8.0需要扫描表连接后的结果,当表连接数量多或基表数据量大时,需要扫描的数据量很大,导致执行效率很低。
图1 CPU使用率 分析对应时间段该实例的慢日志,该SQL执行快时其扫描行数为百万级,当SQL执行慢时其扫描行数为千万级,与业务确认该表短期内并无大量数据插入,因此推断执行慢是因为未走索引或选错索引。且通过EXPLAIN查看该SQL的执行计划确实是全表扫描。
版本EOS(停止服务)阶段: GaussDB(for MySQL) 版本EOS之后, GaussDB(for MySQL) 将不再支持创建该版本实例,同时对存量该版本实例不提供相应的技术支持,包含新特性更新、漏洞/问题修复、补丁升级以及工单指导、在线排查等客户支持,不再适用于GaussDB
此外,云数据库 GaussDB(for MySQL)会在用户设置的运维时间段内,通过热补丁方式及时修复影响重大的操作系统漏洞。 父主题: 变更实例配置
EXPLAIN确认该SQL的执行计划,发现走全表扫描且单条扫描行数在35万+,其并未走索引。 进一步查看该表的表结构,发现该表仅对字段“is_deleted”添加了一个索引“IDX_XX_USERID”,因此上述查询无索引可选。
并行查询支持的场景: 支持全表扫描、索引扫描、索引范围扫描、索引逆序扫描、索引点查询、索引下推等。 支持单表查询、多表JOIN、视图VIEW、子查询,部分CTE查询等。
页面搜索避免使用左模糊(如:SELECT * FROM users WHERE u_name LIKE ‘%hk’)或者全模糊,避免从索引扫描退化为全表扫描,如果需要请在应用层解决。 索引文件具有B-tree的最左前缀匹配特性,如果左边的值未确定,那么无法使用此索引。
字符集和字符序的默认选择方式 自增字段值跳变的原因 表的自增AUTO_INCREMENT初值与步长 修改表的自增AUTO_INCREMENT值 自增主键达到上限,无法插入数据 自增字段取值 自增属性AUTO_INCREMENT为何未在表结构中显示 空用户的危害 慢日志显示SQL语句扫描行数为
尽量避免用select * 语句进行全表扫描,可以指定字段或者添加where条件。 父主题: 数据库性能
评估业务SQL的执行计划,添加索引避免全表扫描。 扩容CPU规格,满足计算型业务需求。 GaussDB(for MySQL) CPU使用率高的解决方法 QPS (次/秒) 该指标用于统计SQL语句查询次数,含存储过程。
概述 社区MySQL在处理column IN (const1, const2, .... )时,如果column上面有索引,那么通常优化器会选择Range scan进行扫描。
尽量不要使用负向查询,避免全表扫描。使用负向查询是指使用负向运算符,如:NOT, !=, <>, NOT EXISTS, NOT IN以及NOT LIKE等。 如果使用负向查询,无法利用索引结构做二分查找,只能做全表扫描。 避免对三个表以上执行JOIN连接。
例如总执行次数、平均扫描行数、平均执行耗时等信息。 单击操作列的“SQL限流”,新建SQL限流规则。详细内容请参考使用GaussDB(for MySQL)的SQL限流。 勾选“日期对比”,可以选择对比日期、对比时间段、查看不同天同一时间段的TOP SQL信息。
修改最大连接数 连接数支持在线修改,具体方法请参见编辑参数模板。 支持命令方式修改最大连接数。 执行以下命令,查看最大连接数。
注意事项 当有对应的小版本更新时(定期同步开源社区问题、漏洞修复),请及时手动立即升级或者设置可维护时间段升级小版本。 升级数据库内核小版本会重启GaussDB(for MySQL)实例,服务可能会出现闪断,请您尽量在业务低峰期执行该操作,或确保您的应用有自动重连机制。
重点关注扫描行数、返回结果行数超过百万级别的慢查询,以及锁等待时间长的慢查询。 慢查询用户可自行分析,或使用数据管理服务(DAS)的SQL诊断工具对慢查询语句进行诊断。 使用数据库代理+只读节点架构,实现读写分离。
全量SQL打开后,可以通过数据库管理服务(Data Admin Service ,DAS)查看SQL语句耗时信息,例如平均执行耗时、总耗时、 平均锁等待耗时、平均扫描行数等。 父主题: 安全