MySQL 中表空间的查看和清理
/*
查看所有数据库容量大小
*/
/*
查看所有数据库容量大小
*/
/*
查看数据库中各个表容量大小
*/
/*
查看指定数据库的容量大小
*/
/*
查看指定的数据库中各个表容量大小
*/
/*
查看指定数据库中指定表的空间大小
*/
/*
查看所有产生碎片的表
*/
/*
查看某个表的碎片大小
SHOW TABLE STATUS LIKE '表名';
如果data_free字段不为0则表示有碎片存在
*/
-- 清理表碎片
/1. MyISAM表/
-- OPTIMIZE TABLE 表名
/*
Optimize语句可以重新组织表、索引的物理存储,减少存储空间,提高访问的IO效率
【注意】
1.使用这个语句需要对目标表具有select、insert权限
2.检查磁盘空间:剩余空间必须 > 被optimize的表大小
3.Optimize只对独立表空间(innodb_file_per_table=1)才有作用
4.数据量越大的表,优化耗时越长,百万条数据大约耗时30s(约25000-30000行/秒,此数据根据机器磁盘性能会有差异)。所以,在磁盘优化时,所有的增删操作将受限,请选择一个业务空档期执行。
*/
/2. InnoDB表/
-- ALTER TABLE 表名 engine = InnoDB
/*
本质上是recreate,Alter期间支持DML查询和更新操作
执行过程
1.获取MDL(meta data lock)写锁,innodb内部创建与原表结构相同的临时文件
2.拷贝数据前,MDL写锁退化成读锁,支持DML更新操作
3.根据主键递增顺序,将一行一行的数据读出并写到临时文件,直到全部写入完成,并且拷贝期间的DML更新操作会记录到Row log中
4.上锁,再将Row log中的数据应用到临时文件
5.互换原表和临时表的名字
6.删除临时表
*/
-- 在需要备份数据库里面的数据时,我们需要知道数据库占用了多少磁盘大小
-- 将表的数据和索引进行相加
-- 查询所有数据的大小
-- 查询某个表的数据大小
/*
在mysql中有一个information_schema数据库,这个数据库中装的是mysql的元数据,包括数据库信息、数据库中表的信息等。所以要想查询数据库占用磁盘的空间大小可以通
过对information_schema数据库进行操作。
information_schema中的表主要有:
schemata表:这个表里面主要是存储在mysql中的所有的数据库的信息
tables表:这个表里存储了所有数据库中的表的信息,包括每个表有多少个列等信息。
columns表:这个表存储了所有表中的表字段信息。
statistics表:存储了表中索引的信息。
user_privileges表:存储了用户的权限信息。
schema_privileges表:存储了数据库权限。
table_privileges表:存储了表的权限。
column_privileges表:存储了列的权限信息。
character_sets表:存储了mysql可以用的字符集的信息。
collations表:提供各个字符集的对照信息。
collation_character_set_applicability表:相当于collations表和character_sets表的前两个字段的一个对比,记录了字符集之间的对照信息。
table_constraints表:这个表主要是用于记录表的描述存在约束的表和约束类型。
key_column_usage表:记录具有约束的列。
routines表:记录了存储过程和函数的信息,不包含自定义的过程或函数信息。
views表:记录了视图信息,需要有show view权限。
triggers表:存储了触发器的信息,需要有super权限。
1Byte = 8 bits;
1KB = 1024Byte = 2的10次方Byte = 1024 Byte
1MB = 1024KB = 2的20次方Byte = 1048576 Byte
1GB = 1024MB = 2的30次方Byte = 1073741824 Byte
1TB = 1024GB = 2的40次方Byte = 1099511627776 Byte
1PB = 1024TB = 2的50次方Byte = 1125899906842624 Byte
1EB = 1024PB = 2的60次方Byte = 1152921504606846976 Byte
1ZB = 1024EB = 2的70次方Byte = 1180591620717411303424 Byte
1YB = 1024ZB = 2的80次方Byte = 1208925819614629174706176 Byte
1DB = 1024YB = 2的90次方Byte = 1237940039285380274899124224 Byte
1NB = 1024DB = 2的100次方Byte = 1267650600228229401496703205376 Byte
*/
MySQL 查看事物和锁情况
__EOF__
本文链接:https://www.cnblogs.com/hyzs/p/18162478.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!