首页 > 数据库 >MySQL优化常用命令

MySQL优化常用命令

时间:2022-12-01 17:58:52浏览次数:39  
标签:stats 查看 show 常用命令 索引 innodb MySQL table 优化

show variables like 'transaction_isolation'; 查看事务隔离级别

/* 查询长事务(超过60秒) */
select * from information_schema.innodb_trx where TIME_TO_SEC(timediff(now(),trx_started))>60

使用show table status 查看表信息 (含行数、表数据大小、索引大小等)

show table status from db_name like 'esf_seller_history'\G;

查询结果解释

  1. Name 表名称
  2. Engine 表的存储引擎
  3. Version 版本
  4. Row_format 行格式。对于MyISAM引擎,这可能是Dynamic,Fixed或Compressed。动态行的行长度可变,例如Varchar或Blob类型字段。固定行是指行长度不变,例如Char和Integer类型字段。
  5. Rows 表中的行数。对于非事务性表,这个值是精确的,对于事务性引擎,这个值通常是估算的。
  6. Avg_row_length 平均每行包括的字节数
  7. Data_length 整个表的数据量(单位:字节)
  8. Max_data_length 表可以容纳的最大数据量
  9. Index_length 索引占用磁盘的空间大小
  10. Data_free 对于MyISAM引擎,标识已分配,但现在未使用的空间,并且包含了已被删除行的空间。
  11. Auto_increment 下一个Auto_increment的值
  12. Create_time 表的创建时间
  13. Update_time 表的最近更新时间
  14. Check_time 使用 check table 或myisamchk工具检查表的最近时间
  15. Collation 表的默认字符集和字符排序规则
  16. Checksum 如果启用,则对整个表的内容计算时的校验和
  17. Create_options 指表创建时的其他所有选项
  18. Comment 包含了其他额外信息,对于MyISAM引擎,包含了注释徐标新,如果表使用的是innodb引擎 ,将现实表的剩余空间。如果是一个视图,注释里面包含了VIEW字样。

查看索引

show index from tm_test_key_len ;

重新组织索引

analyze table tm_test_key_len;

重建索引

查看SQL执行计划

explain select xxx;

进阶-查看优化器决策过程 Optimizer Trace

/* 打开optimizer_trace,只对本线程有效 /
SET optimizer_trace='enabled=on';
/
执行语句 /
select * from tt order by xx limit 10;
/
查看 OPTIMIZER_TRACE 输出 /
SELECT * FROM information_schema.OPTIMIZER_TRACE;
/
关闭optimizer_trace,只对本线程有效 */
SET optimizer_trace='enabled=off';

查看innodb配置

mysql>show variables like '%innodb_stats%';
+--------------------------------------+-------------+
| Variable_name | Value |
+--------------------------------------+-------------+
| innodb_stats_auto_recalc | ON |
| innodb_stats_method | nulls_equal |
| innodb_stats_on_metadata | OFF |
| innodb_stats_persistent | ON |
| innodb_stats_persistent_sample_pages | 20 |
| innodb_stats_sample_pages | 8 |
| innodb_stats_transient_sample_pages | 8 |
+--------------------------------------+-------------+

1、对于所有innodb表,可以设置全局参数
全局参数:
innodb_stats_persistent 是否开启统计
innodb_stats_auto_recalc 自动重新统计
innodb_stats_persistent_sample_pages 随机取样页数
innodb_stats_on_metadata 该参数主要为元数据索引统计分析,

MySQL的优化器是通过innodb收集到的数据来选择最优的执行计划,但因为这些数据会随着某些操作而重新计算,造成执行计划会多次变化,出现不精确和不稳定的问题。

这些导致重新计算的操作有:
1.重启
2.访问表
3.表中数据改变(1/16 以上的DML)
4.show table status 及 show index for table
5.analyze table
6.其他
为了解决这个问题,在mysql 5.6 时,加入了持续优化统计,不再自动重新统计,持续统计数据是作为系统表存储在innodb_table_stats和innodb_index_stats中的,在上次的分享中也有提到过。

标签:stats,查看,show,常用命令,索引,innodb,MySQL,table,优化
From: https://www.cnblogs.com/starmoon1994/p/16881198.html

相关文章

  • 第16节-MySQL锁与事务
    1、事务的介绍1、事务是一组有着内在逻辑联系的SQL命令。2、支持事务的数据库系统要么执行一个事务里的所有SQL命令,要么把它们当作整体全部放弃。3、事务永远不会只完......
  • MySQL经典面试题及答案
    MySQL经典面试题及答案,每道都是认真筛选出的大厂高频面试题,助力大家能找到满意的工作!下载链接:全部MySQL面试题及答案PDF其他互联网大厂面试题1:阿里巴巴Java面试题2:阿里......
  • MySQL删除数据的三种方式:delete、drop、truncate的区别
    本篇主要讨论MySQL删除数据的三种方式:delete、drop、truncate的区别当行数据批量delete时,InnoDB如何处理自增ID的目录参考来源:1、建表2、插入数据3、删除数据deletetru......
  • 高新能MySQL闲杂笔记
    https://blog.csdn.net/welongfor/article/details/86622790在这里插入图片描述......
  • <三>关于对象优化
    代码1#include<iostream>usingnamespacestd;classMyString3{public: MyString3(constchar*pChar=nullptr){ if(pChar==nullptr){ this->pString......
  • ELasticSearch优化
    硬件优化Elasticsearch的基础是Lucene,所有的素引和文档数据是存储在本地的磁盘中,具体的路径可在ES的配置文件./config/elasticsearch.yml中配置,如下:磁盘在现代服务......
  • mysql索引,事务,视图,存储过程,存储引擎
    一,索引1.概念索引:提供指向存储在表的指定列中的数据值的指针,然后根据指定的排序顺序对这些指针排序。数据库使用索引以找到特定值,然后顺指针找到包含该值的行。索引就......
  • CDQ 分治,李超树与斜率优化
    P4027,及一类类似问题:给定\(a_i,b_i,x_i,y_i\),对于每个\(i\)求出\(f_i=\max\limits_{j=1}^{i}\{a_ix_j+b_iy_j\}\)先说一下一类经典问题的做法:给定\(n\)个二......
  • mysql间隙锁加锁11个规则
        间隙锁是在可重复读隔离级别下才会生效的:next-keylock实际上是由间隙锁加行锁实现的,如果切换到读提交隔离级别(read-committed)的话,就好理解了,过程中去掉......
  • Docker 安装 MySQL
    1、查看可用的MySQL版本访问MySQL镜像库地址:https://hub.docker.com/_/mysql?tab=tags 。可以通过Sortby查看其他版本的MySQL,默认是最新版本 mysql:latest 。......