技术分享 | 在磁盘上查找 MySQL 表的大小

出于复杂的原因,查询MySQL中磁盘上表的实际尺寸并不容易。
MySQL支持多个存储引擎,并可能以多种方式存储数据。
例如,InnoDB存储引擎在MySQL 5 .7 中提供了三种“基本”格式,其中包括Row_formats和两种可压缩类型。
这进一步使问题复杂化。
在MySQL 5 .7 中,信息_schema的数据长度(data_length)和索引长度(index_length)。
Tables用于估计表的大小,这可能是不准确的。
MySQL不是定期刷新这些值,而是定期刷新这些值。
图表显示,数据长度和索引长度更新不一致,服务器启动更新统计信息可能会对您的查询计划产生不稳定的影响。
为了获取更准确的实时信息,您可以通过Innodb_sys_tablespaces表查看表空间信息。
该表可实时更新,没有任何特殊配置。
与信息_schema.tables中的数据不同,Innodb_sys_tablespaces表还处理InnoDB页面的压缩功能,正确显示了文件大小和分配大小之间的差异。
使用不同类型的InnoDB压缩会影响信息_schema中显示的信息。
对于旧的InnoDB压缩(InnoDB表压缩),data_length和index_length显示压缩数据大小。
在MySQL 5 .7 中使用新的InnoDB压缩(InnoDB页面压缩)时,显示的值对应于文件大小,而不是分配的大小。
总而言之,MySQL中的查询表磁盘空间并非易事。
要获取准确的实时信息,您需要检查Innodb_sys_tablespaces表的实际文件大小。
了解不同的INNODB压缩方法如何影响结果也很重要。

存储引擎是什么意思啊??比如mysql的。

存储引擎MySQL中的数据使用不同的技术存储在文件(或内存)中。
这些技术中的每一个都使用不同的存储机制,索引技术,锁定水平,并最终提供了广泛的不同功能和能力。
通过选择不同的技术,您可以获得额外的速度或功能,以改善应用程序的一般功能。
例如,如果您研究许多临时数据,则可能需要使用纪念存储引擎。
纪念引擎能够将所有表数据存储在内存中。
或者,您可能需要一个支持交易处理的数据库(在交易处理未成功时,在反馈数据上保护数据)。
这些不同的技术和相关的功能称为MySQL中的存储引擎(也称为表类型)。

一文带你了解MySQL锁及幻读、脏读是怎么产生的?

MySQL锁定机制,魔术阅读发生的原因和解决方案以及肮脏读取的发生通过存储在MySQL数据库中的权限表实现,包括用户,DB,Table_priv,Columns_priv和Host。
MySQL锁定机制分为全局锁,表级锁和行锁。
全局锁锁定主要用于逻辑备份的整个数据库实例。
表级别锁分为表锁和元数据锁(MDL)。
表锁由Locktables命令控制,并且在访问表时会自动添加MDL。
线锁在InnoDB交易中动态浸没,以确保交易隔离。
行锁引入了一个间隙锁,以防止幻影读取问题。
在重复读取隔离级别上应用间隙锁定。
binlog_format =读取提交的隔离水平与行相结合可以避免读取幻影。
该解决方案还包括在InnoDB中使用下一个代理keylock。
阅读未听到的数据时,有一个肮脏的阅读问题。
当从未发现的交易中读取数据并再次隔离时,通常会发生肮脏的读取值。
带来肮脏的页面是在磁盘上使用内存数据的过程,主要考虑使用内存和重新创建。
InnoDB通过计算肮脏的页面比率和重新编写的使用速度来控制刷牙肮脏页面的策略。
锁定规则基于Next-keylock,并且在搜索过程中可访问的对象被锁定。
该索引的相等查询被降级为行或间隙锁定。
在唯一索引中访问范围查询的错误,该查询不符合条件值。
数据库表的空间回收取决于表的数据页。
在MySQL8 .0版本之前,该表结构存储在.FRM文件中,该文件存储在MySQL8 .0中,然后将表结构存储在系统数据表中。
建议使用参数Innodb_file_per_table来控制表数据存储模式,并将其设置为易于管理和回收表空间。
表重建是回收桌子空间并解决孔隙率问题的有效方法。
它是通过在线DDL实现的,可以在重建过程中在桌子上工作。

MySQL 之 SHOW TABLE STATUS 简介

大家好,我是一个移动砖块的兄弟。
今天,我将分享有关MySQL的小知识! ShowTableStatus操作员主要用于显示表的相应信息。
使用时,有些学生可能不经常使用它。
例如,输入以下命令以输入mySQL:username@host:〜#mysql-uroot-p并使用命令:underatabase_name;选择数据库。
接下来,输入ShowTableStatus;要查看数据库中所有表的信息。
在查看有关\ G表的信息时,一个非常有用的团队可以将显示9 0度的结果转变为垂直显示,从而有助于阅读信息。
使用ShowTableStatus;应用程序,您可以获得以下信息:名称:表引擎的名称:表的存储引擎,通常称为旧版本中的类型。
版本:.frm表的文件数。
ROW_FORMAT:行格式。
对于表Myisam,可选值是动态,固定或压缩的。
行:表中的行数。
AVG_ROW_LENGTH:线上包含的字节的平均数量。
data_length:表格中表的大小。
max_data_length:表的最大容器容量。
index_length:索引大小(在字节中)。
data_free:分配但目前尚未使用。
auto_increment:下一个auto_increment的值。
create_time:创建表的时间。
update_time:最近更改表数据。
Check_Time:使用CheckTable命令或Myisamchk工具上次检查表的时间。
连接:一组默认字符和表格排序列的规则。
控制金额:如果包括,则保存整个表的实时中的控制量。
Create_Options:创建表时指示的其他参数。
评论:包含有关该表已创建表的评论,或有关InnoDB表格空间空间或表示形式的文本“视图”的其余信息。
此信息的开发为优化数据库的性能,管理和维护表结构提供了更大的帮助。
希望这种交流能为您提供帮助!

几种常见的MySQL/PolarDB-MySQL回收表空间方法对比

在数据库的设计中,表格空间的处理是一个关键操作,旨在优化经济效率和业务需求之间的存储和资源。
在系统操作过程中,随着数据量的积累,存储容量可以达到上限。
当前,通常有必要通过更新副本或删除数据的规范来处理表格空间。
接下来提出了几种用于处理表格空间的常用方法,旨在确保对人员的发展,运营和维护做出稳定而有效的选择。
首先,考虑使用阿里巴巴云内核提供的功能的可能性,例如purglargefileasynchrony。
这可以有效地减少由放电操作引起的性能波动。
此外,对于具有替代性的运营,该行业提供了几种开源解决方案,例如GH-SOST,PT-CONLINE-SCHEMA-CHEMA-CHEANGE和ALIBABA CLUD RDSMYSQL开发的免费结构变化。
比较这些工具,PT-Online-Scema-Change对起始表的影响较小,创建了起始表的副本,并使用触发器同步数据更改。
OnlinesCheMachange接受异步模式,通过杂志表和背景过程跟踪和应用数据更改以实现异步过程管理。
GH-SOST直接分析和应用更改,读取BINLOG文件,从而提高了数据复制的有效性。
值得关注的另一种方法是在不锁定DM的情况下更改结构。
这减少了阻止和数据库的开销费用,避免使用触发器以及与DTS(数据传输服务)结合,从而确保在处理表格空间时不会中断临时表的同步过程。
为了检查DM的无忧变化的稳定性,进行了几项测试。
结果表明,不锁定DMS的变化的生产率比其他方法更稳定。
尽管事实操作时间更长,在重命名桌子的最后一个阶段中,时间在2 秒内控制时间。
根据业务的实际需求,建议将无忧的DMS变更与交替工作结合使用。
这使您可以在DMS控制台上工作,并在页面上部选择“所有功能>数据方案>自由更改”以进行配置。
在选择处理表格空间的方法时,您需要注意某些限制,例如不支持线路的主要线路,因为DMS需要在操作过程中使用最大和最小值来确定副本的范围,包括大量具有Minmax计算的SQL。
要在不阻止的情况下对结构的变化原理和优化的原理进行深入了解,请参阅下一个链接以获取更详细的信息:如何使用DMS在不阻止优化和更改原理的情况下对结构进行更改(参考证书文档)。
本文是来自阿里巴巴云的原始文章,未经许可禁止再现。