MySQL内存表与一般表差异解析及SHOWTABLESTATUS使用技巧

创始人
2024-12-20 11:35:30
0 次浏览
0 评论

mysql内存表和一般表的区别

我们仍然使用两个会话,一个会话运行,用于运行主SQL;另一个会话ps,用于观察performance_schema:

主会话线程数为29,

重置performance_schema中的统计信息。

临时表的表大小限制取决于参数tmp_table_size和max_heap_table_size中较小的一个。
在我们的实验中,我们将max_heap_table_size设置为example。

我们将会话级临时表大小设置为2M(小于上次实验中临时表使用的空间),并使用临时表执行SQL:

查看内存分配记录:

你会发现内存分配略大于2M。
我们猜测临时表会比配置消耗稍多,可以忽略。

查看语句的特征值:

可以看到该语句使用了需要写入磁盘的临时表。

那么这个临时表使用了多少磁盘空间呢?

我们在performance_schema中启用等待相关的统计项:

重做实验并跳过。

查看performance_schema的统计值:

可以看到几个现象:

1.临时表空间写入了7.92MiB的数据。

2.这些数据是在语句写入后慢慢地、逐渐地写入的。

我们来看看这些写操作的特点。
我们在实验03中使用的这个方法:

可以看到写入线程是page_clean_thread,这是一个脏操作,所以你可以理解为什么数据写入速度慢。

还可以看到每个IO操作的大小为16K,也就是刷新数据页的操作。

结论:

我们可以看到,

1.当内存不足时,MySQL基本都会遵守max_heap_table_size的设置。
不够。
,直接将表传输到磁盘存储。

2.由于引擎不同(内存表引擎为heap,磁盘表引擎遵循internal_tmp_disk_storage_engine的配置),本实验写入磁盘的数据量与实验05中内存使用的数据量不同。

3.如果临时表使用磁盘,并且表引擎配置为InnoDB,那么即使临时表在短期SQL中使用,使用后释放,释放后脏页也会被flush。
在磁盘中,消耗了一些IO。

MySQL之SHOWTABLESTATUS简介

大家好,我是李哥,今天给大家分享一些关于MySQL的小知识!

showtablestatus语句主要用于显示表相关信息。
使用的时候,有的同学可能用得很少。
例如,输入以下命令登录MySQL:username@host:~#mysql-uroot-p,然后使用命令:usedatabase_name选择数据库,然后输入showtablestatus查看数据库中所有表的信息;数据库。

查看表格信息时,\G命令非常有用。
它可以将显示结果旋转90度至纵向,使信息更易于阅读。

使用showtablestatus;语句,可以获得以下信息:

Name:表的名称Engine:表的存储引擎,在旧版本中通常称为Type。
版本:表的.frm文件的版本号。
Row_format:行格式。
对于MyISAM表,可选值为Dynamic、Fixed或Compressed。
行数:表中的行数。
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:创建表时指定的附加选项。
Comment:包含创建表时的注释、InnoDB表空间的剩余空间信息或VIEW的文本。

这些信息对于优化数据库性能、管理和维护表结构非常有用。
希望这次交流能够对您有所帮助!

文章标签:
MySQL 内存表
热门文章
1
SQL2000数据库备份压缩技巧:优化空... 怎么将SQL2000中的较大的备份数据库压缩变小更改数据库属性-选项-恢复模型很...

2
高效掌握:CMD命令轻松启动、关闭及登录... 如何用cmd命令快速启动和关闭mysql数据库服务开发中经常使用MySQL数据库...

3
SQL字符串处理技巧:单引号使用与转义标... SQL语句中,字符串类型的值均使用什么符号标明?单引号如果字符串内有单引号,请小...

4
Windows环境下Redis安装指南与... redis安装windowsredis基本简介与安装安装Redis首先需要获取安...

5
深度解析:Redis性能优势与局限性,助... redis有哪些优缺点?Redis的全称是RemoteDictionary.Se...

6
深入解析:MySQL数据库的特性与应用 mysql是什么MySQL是一个关系数据库管理系统。MySQL是一个开源关系数据...

7
CMD操作教程:轻松查看MySQL服务器... 状态通过CMD查看MySQL服务器状态的方法cmd如何看mysql状态:如何通过...

8
解决MYSQL 1064错误:proje... MYSQL建表1064错误?这是由于project_state参数设置为非零值且...

9
零基础入行Java:五步助你掌握编程技巧 北大青鸟java培训:零基础小白如何快速入行JAVA?很多JAVA编程初学者在第...

10
MySQL日期存储选择:DateTime... MySQL保存日期,用哪种数据类型合适?datetime?timestamp?还...