mysql - 我如何根据数据库结构查看 InnoDB 如何存储我的数据?

标签 mysql database database-design innodb database-schema

是否有任何工具或命令可以显示 InnoDB 如何根据数据库结构存储我的数据库。 我想看看 InnoDB 如何存储我的表数据。我想更改表结构以改进删除查询。

我想看看结构如何影响删除查询的性能。

最佳答案

要检查它如何存储数据,您必须查看 MySQL 的文件夹。根据操作系统和本地设置,它会将其存储在每个表中或仅存储在一个大文件中。

要检查当前状态,执行

SHOW STATUS

你也可以像这样应用 WHERE

SHOW STATUS WHERE variable_name like '%pages%'

这将详细显示变量名称中带有“页面”的任何状态。

为了检查您的系统有多大,我使用了这个命令,它将它分成每个表级别。

SELECT 
table_name AS `Table`,
concat(round(sum(table_rows)/1000000,2),'M') '# of rows',
concat(round(sum(data_length)/(1024*1024*1024),2),'G') 'Size of data',
concat(round(sum(index_length)/(1024*1024*1024),2),'G') 'Size of index',
concat(round(sum(data_length+index_length)/(1024*1024*1024),2),'G') 'Total size',
round(sum(index_length)/sum(data_length),2) 'Index fraction'
FROM information_schema.TABLES
GROUP BY table_name;

这是您要找的吗?

关于mysql - 我如何根据数据库结构查看 InnoDB 如何存储我的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19906466/

相关文章:

android - 图像未从 android 插入到 MySQL

java - 如果设置了标志,则 JDBC (My)SQL 仅获取单元格数据

php - 如何使用 android 中的 volley 库将数据保存到 mysql?

python - 使用python在RDS MySQL中插入数据(IndentationError : unindent does not match any outer indentation level)

ruby-on-rails - 无架构数据库 : Indexing dynamically-typed things by their properties?

php - 从文本文件 extensi .job 中读取特定值

database - Android 预填充数据库

python-3.x - 网页抓取 : My first project and no idea where to start

sql - 如何在不使用触发器的情况下为一对多关系设置额外约束

php - MySQL 多个表或单个字段的多个值?