MySQL 优化真的难吗?学习第2天

举报
梦想橡皮擦 发表于 2022/01/07 08:02:35 2022/01/07
【摘要】 优化可用的一些命令上篇博客说到了数据库支持的引擎,如果你想查阅你当前电脑上支持的引擎,可以使用如下命令。show engines;其中列名含义如下:Engine:引擎名称;Support:是否支持;Comment:备注;Transactions:是否支持事务;XA:XA事务;Savepoints:事务回滚。 查看当前数据库使用的引擎show variables like '%storage...

优化可用的一些命令

上篇博客说到了数据库支持的引擎,如果你想查阅你当前电脑上支持的引擎,可以使用如下命令。

show engines;

其中列名含义如下:

  • Engine:引擎名称;
  • Support:是否支持;
  • Comment:备注;
  • Transactions:是否支持事务;
  • XA:XA事务;
  • Savepoints:事务回滚。

查看当前数据库使用的引擎

show variables like '%storage_engine%'

其中各个变量值的含义如下:

  • default_storage_engine:默认存储引擎;
  • default_tmp_storage_engine:临时表默认存储引擎;
  • internal_tmp_disk_storage_engine:磁盘临时表。

使用 show variables; 可以查看全部变量。
如果想查看最大连接数,使用如下命令即可。

show variables like 'max_connections' 

上文提及了临时表,那必然会涉及临时表大小的问题。

show variables like '%tmp_table_size%';
show variables like '%max_heap_table_size%';

上述2个变量值中,临时表的大小会以较小者为准。

如果涉及的表有 TEXT 或 BLOB 类型的列,则临时表的大小<配置的阈值,也会在磁盘上创建临时表。

临时表空间处理办法

临时表具有自己的表空间文件。
新文件与通用表空间一起位于数据目录中,名称为 ibtmp1
使用如下命令可以清理表空间

optimize table '表名'

不运行手动运行 optimize table(该命令用来重新利用未使用的空间,并整理数据文件的碎片。如果你不能使用 optimize table,那么让 ibtmp1 大小缩小为零的方法,只能重新启动服务器。

另外需要注意 optimize table 只对 MyISAMBDBInnoDB 表起作用,而且该命令在使用的时候,MySQL会锁定表。
运行成功,结果如下所示。

在处理前,也可以使用下面的命令查看数据库碎片空间大小。

show table status like '表名'

然后对该表使用 optimize table 命令,但是会出现如下内容,使用新的命令进行修改。

当是InnoDB引擎时我们就用 alter table table.name engine='innodb'代替optimize做优化

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。