SQL编写规范及性能排查一些方法

SQL 语句编写规范

  1. 避免使用select *,对于宽表来说,这是灾难;
  2. 严禁不加任何where条件读取数据;
  3. MySQL中的text类型字段独立存储,数据量少的表除外:
  4. Where条件中的过滤条件字段上严禁使用任何函数,包括数据类型转换函数;
  5. 分页查询语句全部都需要带有排序条件 , 否则很容易引起乱序;
  6. 用in()/union替换or;
  7. 严禁使用%前缀进行模糊前缀查询;
  8. 避免使用子查询,可以把子查询优化为join操作;
  9. 分页查询,当limit起点较高时,可先用过滤条件进行过滤;

MySQL 语句性能排查方法

1、.排查sql排序数最多语句
select schema_name,digest_text,count_star,sum_rows_sent,sum_sort_rows,first_seen,last_seen 
from performance_schema.events_statements_summary_by_digest 
where
schema_name is not null and schema_name!='information_schema' order by sum_sort_rows desc limit 10;
2、排查IO消耗最多的文件或表
select file_name,event_name,count_read,sum_number_of_bytes_read,count_write,sum_number_of_bytes_write 
from performance_schema.file_summary_by_instance 
order by sum_number_of_bytes_read+sum_number_of_bytes_write desc limit 10;

3、索引使用排行
select object_name, index_name, count_fetch, count_insert, count_update, count_delete 
from performance_schema.table_io_waits_summary_by_index_usage order by sum_timer_wait desc limit 1;
4、排查IO等待事件消耗最多
SELECT event_name, count_star, sum_timer_wait, avg_timer_wait 
FROM performance_schema.events_waits_summary_global_by_event_name 
WHERE event_name!='idle' ORDER BY sum_timer_wait DESC LIMIT 10;
5、排查临时表使用最多
SELECT schema_name,digest_text,sum_created_tmp_disk_tables,sum_created_tmp_tables,first_seen,last_seen 
FROM performance_schema.events_statements_summary_by_digest 
WHERE schema_name IS NOT NULL AND schema_name!='information_schema' 
ORDER BY sum_created_tmp_disk_tables DESC LIMIT 10;
6、排查返回的结果集最多
SELECT schema_name,digest_text,count_star,sum_rows_sent,sum_rows_sent,first_seen,last_seen 
FROM performance_schema.events_statements_summary_by_digest 
WHERE schema_name IS NOT NULL AND schema_name!='information_schema' 
ORDER BY sum_rows_sent DESC LIMIT 10;
7、排查响应最长SQL
schema_name,digest_text,count_star,avg_timer_wait,sum_rows_sent,sum_rows_examined,first_seen,last_seen 
from performance_schema.events_statements_summary_by_digest 
where schema_name is not null and schema_name!='information_schema'
order by avg_timer_wait desc limit 10;

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
背景: 随着公司业务的发展,数据库的使用量和重要性不断增加。为了保证数据库的稳定运行和数据的安全性,需要建立一套完整的数据库规范项目,包括查询分析器规范、数据库数据规范、数据库密码规范、数据库安装部署及升级规范、数据库健康巡检、数据库性能优化、数据库故障排查、数据库开发支持等方面的规范。 1. 查询分析器规范: 为了保证查询分析器的使用规范,需要制定一些规范,包括: (1)查询分析器的使用权限,只有授权用户才能使用查询分析器。 (2)查询分析器的使用目的,只能用于数据库管理和维护,不得用于其他用途。 (3)查询分析器的使用记录,需要记录用户的操作记录和时间,以便进行追踪和审计。 2. 数据库数据规范: 为了保证数据库数据的规范,需要制定一些规范,包括: (1)数据命名规范,包括表名、列名、索引名等的命名规范,以便于管理和维护。 (2)数据类型规范,包括使用哪种数据类型、数据类型的长度等规范,以便于数据的存储和查询。 (3)数据完整性规范,包括主键、外键、唯一约束等规范,以保证数据的完整性和一致性。 3. 数据库密码规范: 为了保证数据库的安全性,需要制定一些密码规范,包括: (1)密码复杂度规范,包括密码长度、包含字母、数字、特殊字符等规范,以保证密码的安全性。 (2)密码更新规范,包括密码的定期更新和强制更新等规范,以保证密码的时效性和安全性。 (3)密码存储规范,包括密码的加密存储和保密性规范,以保证密码的安全性。 4. 数据库安装部署及升级规范: 为了保证数据库的稳定运行,需要制定一些安装部署及升级规范,包括: (1)安装部署规范,包括数据库的安装位置、安装方式、安装流程等规范。 (2)升级规范,包括数据库升级的方式、升级流程、备份和恢复等规范。 5. 数据库健康巡检: 为了保证数据库的健康运行,需要制定一些巡检规范,包括: (1)巡检频率规范,包括巡检的时间周期、巡检的内容、巡检的方式等规范。 (2)巡检报告规范,包括巡检报告的格式、内容、结果分析等规范。 6. 数据库性能优化: 为了保证数据库的高效运行,需要制定一些性能优化规范,包括: (1)SQL语句优化规范,包括SQL语句的优化原则、优化技巧等规范。 (2)索引优化规范,包括索引的创建、删除、修改等规范,以提高查询效率。 7. 数据库故障排查: 为了保证数据库的稳定运行,需要制定一些故障排查规范,包括: (1)故障分类规范,包括故障的分类和级别等规范。 (2)故障排查流程规范,包括故障排查的流程、步骤、人员分工等规范。 8. 数据库开发支持: 为了保证数据库的开发支持,需要制定一些开发规范,包括: (1)开发流程规范,包括需求分析、设计、开发、测试、发布等规范。 (2)开发工具规范,包括使用的开发工具、版本、配置等规范。 (3)开发文档规范,包括文档的编写、格式、内容等规范

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值