检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
慢日志显示SQL语句扫描行数为0 场景描述 查询慢日志中记录SQL执行65秒,但是扫描行数为0。 原因分析 被中断的查询超过慢日志设置阈值也会记录慢日志,但是所记录的扫描行数为0。客户JDBC连接设置了查询超时: 解决方案 优化SQL或者将sockTimeOut设置合理值。 父主题:
特性支持场景 并行查询支持以下场景: 支持全表扫描、索引扫描、索引范围扫描、索引逆序扫描、索引点查询、索引下推等。 支持单表查询、多表JOIN、视图view、子查询,部分CTE查询等。 支持多种JOIN算法,包括:BNL Join、BKA Join、HASH Join、Nested
Backward Index Scan Backward Index Scan为反向索引扫描,可以通过反向扫描索引的方式消除排序,由于反向扫描与其他一些特性(例如: Index Condition Pushdown(ICP))不兼容,导致优化器选择Backward Index Scan后出现性能劣化的情况。
QL 8.0需要扫描表连接后的结果,当表连接数量多或基表数据量大时,需要扫描的数据量很大,导致执行效率很低。 为了提升DISTINCT,尤其多表连接下DISTINCT的查询效率,GaussDB(for MySQL)在执行优化器中加入了剪枝功能,可以去除不必要的扫描分支,提升查询性能。
分析对应时间段该实例的慢日志,该SQL执行快时其扫描行数为百万级,当SQL执行慢时其扫描行数为千万级,与业务确认该表短期内并无大量数据插入,因此推断执行慢是因为未走索引或选错索引。且通过EXPLAIN查看该SQL的执行计划确实是全表扫描。 图2 慢日志 在实例上对该表执行SHOW INDEX
MySQL)实例操作系统更新 云数据库 GaussDB(for MySQL)实例需要适时进行操作系统更新,以提高数据库性能和数据库的整体安全状况。 实例内核版本升级时,云数据库 GaussDB(for MySQL)会根据操作系统的实际情况,决定是否更新以及更新适合的操作系统冷补丁版本。
InnoDB逻辑读速率 登录实例,查看实话会话,发现大量会话在执行SELECT COUNT(*)。 EXPLAIN确认该SQL的执行计划,发现走全表扫描且单条扫描行数在35万+,其并未走索引。 进一步查看该表的表结构,发现该表仅对字段“is_deleted”添加了一个索引“IDX_XX_USER
0.42.230600及以上时,并行查询默认在主节点不生效,如需使用可联系客服人员开启。 并行查询支持的场景: 支持全表扫描、索引扫描、索引范围扫描、索引逆序扫描、索引点查询、索引下推等。 支持单表查询、多表JOIN、视图VIEW、子查询,部分CTE查询等。 支持多种JOIN算法,包括:BNL
页面搜索避免使用左模糊(如:SELECT * FROM users WHERE u_name LIKE ‘%hk’)或者全模糊,避免从索引扫描退化为全表扫描,如果需要请在应用层解决。 索引文件具有B-tree的最左前缀匹配特性,如果左边的值未确定,那么无法使用此索引。 利用覆盖索引来进行
自增主键达到上限,无法插入数据 自增字段取值 自增属性AUTO_INCREMENT为何未在表结构中显示 空用户的危害 慢日志显示SQL语句扫描行数为0 错误日志页面显示handle_sync_msg_from_slave my_net_read error:-1 执行SQL语句报错:ERROR
创建只读节点专门负责查询。减轻主实例负载,分担数据库压力。 多表关联查询时,关联字段要加上索引。 尽量避免用select * 语句进行全表扫描,可以指定字段或者添加where条件。 父主题: 数据库性能
说明 监控项异常的处理建议 相关案例 CPU使用率 (%) 该指标用于统计测量对象的CPU使用率。 评估业务SQL的执行计划,添加索引避免全表扫描。 扩容CPU规格,满足计算型业务需求。 GaussDB(for MySQL) CPU使用率高的解决方法 内存使用率 (%) 该指标用于统计测量对象的内存使用率。
TABLE不能和其它DML写在同一个事务里。 尽量不要使用负向查询,避免全表扫描。使用负向查询是指使用负向运算符,如:NOT, !=, <>, NOT EXISTS, NOT IN以及NOT LIKE等。 如果使用负向查询,无法利用索引结构做二分查找,只能做全表扫描。 避免对三个表以上执行JOIN连接。需要JOIN的字段,数据类型必须保持一致。
社区MySQL在处理column IN (const1, const2, .... )时,如果column上面有索引,那么通常优化器会选择Range scan进行扫描。但是在进行Range scan分析的时候,range_optimizer_max_mem_size定义了分析过程中需要的最大内存。如果I
句,有助于您分析系统中存在的问题。 慢日志 慢日志用来记录执行时间超过当前慢日志阈值“long_query_time”(默认是10秒)的语句,您可以通过查询慢日志的日志明细、统计分析情况,查找出执行效率低的语句,进行优化。 全量SQL 当您开启全量SQL功能,系统会将所有的SQL文本内容进行存储,以便进行分析。
SQL信息。此功能仅限已升级高级智能运维包的实例使用,未升级的实例暂不支持导出功能。 单击操作栏的“详情”按钮,可以查看该执行SQL的详细执行信息。例如总执行次数、平均扫描行数、平均执行耗时等信息。 单击操作列的“SQL限流”,新建SQL限流规则。详细内容请参考使用GaussDB(for MySQL)的SQL限流。
B(for MySQL)暴露给不可信第三方。详情请参见设置安全组规则。 建议使用非默认端口,避免端口被扫描攻击 GaussDB(for MySQL)默认端口为3306,容易被扫描攻击,建议将端口设置为非默认端口。详情请参见修改数据库端口。 定期修改管理员账号密码,防止账号被盗用。
(例如网站访问量不大),也会导致实例的CPU使用率偏高。 解决方案: 根据CPU使用率过高的时间点,查看对应时间段的慢日志信息。 重点关注扫描行数、返回结果行数超过百万级别的慢查询,以及锁等待时间长的慢查询。 慢查询用户可自行分析,或使用数据管理服务(DAS)的SQL诊断工具对慢查询语句进行诊断。
counts/min GaussDB(for MySQL)实例节点 1分钟 gaussdb_mysql125_sort_scan 扫描表排序数 该指标用于统计该段时间内通过扫描表完成的排序数。 ≥0 counts/min GaussDB(for MySQL)实例节点 1分钟 gaussdb_m
lock_time String 等待锁时间。 rows_sent String 结果行数量。 rows_examined String 扫描的行数量。 database String 所属数据库。 users String 账号。 query_sample String 执行语法。