mysqlクエリーデータテーブルに記録されたロー数とローあたりの空き容量
2407 ワード
use information_schema;
select TABLE_ROWS, concat(round(sum(DATA_LENGTH/1024), 2),'KB') as totalSize, concat(round(sum(DATA_LENGTH/1024), 2),'KB')/TABLE_ROWS as recordSize from TABLES where table_schema='databaseName' and table_name='tableName';
説明:
MySQLのinformation_schemaデータベースは、データベースの容量と使用情報を保存しています.データベース内の各テーブルに使用されるスペース、テーブルレコードのロー数をクエリーできます.
Tableの構造:
CREATE TEMPORARY TABLE `TABLES` (
`TABLE_CATALOG` varchar(512) NOT NULL DEFAULT '',
`TABLE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
`TABLE_NAME` varchar(64) NOT NULL DEFAULT '',
`TABLE_TYPE` varchar(64) NOT NULL DEFAULT '',
`ENGINE` varchar(64) DEFAULT NULL,
`VERSION` bigint(21) unsigned DEFAULT NULL,
`ROW_FORMAT` varchar(20) DEFAULT NULL,
`TABLE_ROWS` bigint(21) unsigned DEFAULT NULL,
`AVG_ROW_LENGTH` bigint(21) unsigned DEFAULT NULL,
`DATA_LENGTH` bigint(21) unsigned DEFAULT NULL,
`MAX_DATA_LENGTH` bigint(21) unsigned DEFAULT NULL,
`INDEX_LENGTH` bigint(21) unsigned DEFAULT NULL,
`DATA_FREE` bigint(21) unsigned DEFAULT NULL,
`AUTO_INCREMENT` bigint(21) unsigned DEFAULT NULL,
`CREATE_TIME` datetime DEFAULT NULL,
`UPDATE_TIME` datetime DEFAULT NULL,
`CHECK_TIME` datetime DEFAULT NULL,
`TABLE_COLLATION` varchar(32) DEFAULT NULL,
`CHECKSUM` bigint(21) unsigned DEFAULT NULL,
`CREATE_OPTIONS` varchar(255) DEFAULT NULL,
`TABLE_COMMENT` varchar(2048) NOT NULL DEFAULT ''
) ENGINE=MEMORY DEFAULT CHARSET=utf8;
メインフィールドの説明:
TABLE_SCHEMA :
TABLE_NAME:
ENGINE:
TABLE_ROWS:
DATA_LENGTH:
INDEX_LENGTH:
データテーブルの各行のレコード占有領域を計算する目的は何ですか?このテーブルがクエリーのパフォーマンスを保証する前提で、単一テーブルに格納できるローレコードの上限を知ることを目的としています.ブログ3では、1行に記録されたデータサイズが1 kであると仮定し、実際には現在多くのインターネット業務のデータ記録サイズが通常1 K程度であると仮定している.この仮定では,単一テーブルB+ツリーインデックスレベルが3層の場合,格納可能な行レコードの上限は21902400であると結論した.
このことから,1枚のテーブルがクエリ性能を保証する前提で格納できるレコード行数は,1行あたりのレコードの大きさに関係することが分かる.本人がインターネット業務データを統計したところ、単行記録データの大きさが1 kを超えるものは多くなく、単行記録の平均サイズは0.5 k(0.5 k程度)未満、つまり、格納できる行記録の上限は4千万~5千万であることが分かった.
参考ブログ:
1.https://www.jianshu.com/p/8f086c98d591mysqlクエリーライブラリサイズ、テーブル行数、インデックスサイズ
2.https://www.cnblogs.com/mr-wuxiansheng/p/7520628.htmlmsyql round関数
3.https://blog.csdn.net/Saintyyu/article/details/100114372なぜMySQLのインデックスは他のツリーではなくB+ツリーを使用するのですか?例えばBツリー?