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

news/2024/11/8 16:56:22/

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;

http://www.ppmy.cn/news/1278516.html

相关文章

Halcon 检测焊点短路

Halcon 检测焊点短路 read_image (Image1, D:/image/bilibili/photo/检测焊接短路 (4).bmp) dev_close_window () dev_open_window (0, 0, 512, 512, black, WindowHandle) dev_display (Image1) set_display_font (WindowHandle, 16, mono, true, false) threshold (Image1, …

Python中的面向对象编程

导读:本文旨在帮助读者从基础到高级逐步掌握Python的面向对象编程。 目录 OOP基础:构建块 类和对象 定义和实例化类 属性和方法 类属性和实例属性 继承 基本继承 深入理解OOP特性 封装 封装的概念 私有属性和方法 多态 多态性的好处 在Py…

在laravel 项目中 composer.json 中 autoload 配置是什么作用

在 Laravel 项目中,composer.json 文件是一个重要的文件,它用于定义项目依赖以及一些 Composer 的配置。其中 autoload 是一个键(key),其下定义了如何自动加载 PHP 类库。 autoload 的作用是告诉 Composer 和 PHP 解释…

【C++多线程编程】(五)之 线程生命周期管理join() 与 detach()

在C中,std::thread 类用于创建和管理线程。std::thread 提供了两种主要的方法来控制线程的生命周期:join 和 detach。 detach方式,启动的线程自主在后台运行,当前的代码继续往下执行,不等待新线程结束。join方式&…

【C语言】记录一次自己犯下的低级错误 o(╯□╰)o(局部数组与指针数组的传参、赋值)

在这里分享一下本人犯下的低级错误,希望大家别掉同样的坑 o(╥﹏╥)o 文章目录 事情原委错误分析及解救办法错误一: 使用局部数组arr并将其作为返回值解决方法:使用动态内存分配来创建数组,并在函数结束前手动释放内存。 错误二&…

核货宝订单管理系统提高企业效率

核货宝订单管理系统可以帮助企业提高效率,具体体现在以下几个方面: 一、订单自动化处理:核货宝订单管理系统支持订单批发和多渠道订单导入,它可以从订单的接收、处理、跟进、发货、到售后服务等环节都可以通过系统自动完成&#x…

Node.js安装部署

Node.js安装部署 在 Windows 上安装 Node.js1.使用安装程序2.使用包管理器 Chocolatey 安装 在 macOS 上安装 Node.js1.使用 Homebrew 安装 在 Linux 上安装 Node.js1.使用包管理器安装2.使用 Node.js 官方二进制包 安装完成验证 Node.js 是一个基于 Chrome V8 引擎的 JavaScri…

Qt WebAssembly开发环境配置

目录 前言1、下载Emscripten SDK2、 安装3、环境变量配置4、QtCreator配置5、运行示例程序总结 前言 本文主要介绍 Qt WebAssembly 开发环境的配置。Qt for Webassembly 可以使Qt应用程序在Web上运行。WebAssembly(简称Wasm)是一种能够在虚拟机中执行的…