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 只对 MyISAM,BDB 和 InnoDB 表起作用,而且该命令在使用的时候,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个月内不可修改。