MySQL常用命令

共计 1210 个字符,预计需要花费 4 分钟才能阅读完成。

1、查看数据库表的存储量

# 切换数据库

use information_schema;

# 查看库的数据量

select concat(round(sum(data_length/1024/1024),2),'MB') as  '数据量' from information_schema.tables where table_schema='DB_Name';

# 查看指定库表数据量

SELECT concat(ROUND(SUM(data_length / 1024 / 1024), 2), 'MB') AS dataFROM information_schema.tablesWHERE table_schema = 'DB_Name' AND table_name = 'Table_Name';

# 查看库中所有表的数据量

SELECT table_schema AS '数据库', table_name AS '表名', table_rows AS '记录数',TRUNCATE(data_length / 1024 / 1024, 2) AS '数据容量 (MB)',TRUNCATE (index_length / 1024 / 1024, 2) AS '索引容量 (MB)'FROM information_schema.tablesWHERE table_schema = 'DB_Name'ORDER BY data_length DESC, index_length DESC;

# 查看数据路径

SHOW VARIABLES LIKE 'datadir';

# 查看表碎片空间

SELECT table_schema db, table_name, data_free,ENGINE FROM information_schema.TABLES WHERE table_schema NOT IN ('information_schema', 'mysql') AND data_free > 0;

# 优化表空间

alter table table_name engine=innodb;(本质上是 recreate)
optimize table table_name;(本质上是 recreate,但是在不同创建下会有区别)
ALTER TABLE table_name FORCE (在 InnoDB 表中等价于 alter table tb_test engine=innodb;)
mysqlcheck 批量表空间优化 
gh-ost/pt-osc
pt-online-schema-change(本质上也是 先备份旧表数据,然后 truncate 旧表)
MySQL 常用命令

2、快速复制 / 合并 数据

# 快速在同一数据库中复制一个表的结构和索引定义

create table 新表 like 原表 ;

# 将原表中的所有数据插入到新表中,必须保证新表和原表的结构完全相同

insert into 新表 select *from 原表 ;

# 自建 MySQL 可以使用,创建新表并从原表中复制数据的 SQL 语句:

create table 新表 engine=innodb as select * from 原表;
正文完
 1
caoguojian
版权声明:本站原创文章,由 caoguojian 于2023-08-15发表,共计1210字。
转载说明:除特殊说明外本站文章皆由CGJ发布,转载请注明出处。
一言一句话
-「
评论(没有评论)