この記事では、InnoDB の論理ストレージ構造について説明します。お役に立てば幸いです。
datadir を確認してから、対応するデータベース名ディレクトリを入力することで取得できます。多くの ibd が表示されます。ファイル名はテーブル名です。2 つあります。ここでのタイプは、表スペース、共有表スペース (またはシステム表スペース)、および独立表スペース・ファイルです。 [関連する推奨事項:
mysql ビデオ チュートリアル ]
innodb_data_file_path、
mysql> show variables like 'innodb_data_file_path'; +-----------------------+------------------------+ | Variable_name | Value | +-----------------------+------------------------+ | innodb_data_file_path | ibdata1:12M:autoextend | +-----------------------+------------------------+ 1 row in set (0.00 sec)
innodb_file_per_tableを通じて切り替えることができます。が有効になっている場合、各テーブルのデータは別個のテーブルスペースファイルに配置されます。また、各テーブルのテーブルスペースにはデータとインデックスのみが格納され、ロールバック情報、システムトランザクション情報などの他のタイプのデータが格納されることにも注意してください。 、およびセカンダリ書き込みバッファは元の共有テーブルスペースに引き続き格納されます。
innodb_file_per_table のステータスを確認できます。
mysql> show variables like '%innodb_file_per_table'; +-----------------------+-------+ | Variable_name | Value | +-----------------------+-------+ | innodb_file_per_table | ON | +-----------------------+-------+ 1 row in set (0.01 sec)
innodb_file_per_tableStatus
set global innodb_file_per_table=0;
innodb_file_per_table が 0 に等しい場合、つまり OFF が閉じられている場合、作成されたテーブルは保存されます次の例のように、システムによって共有されるテーブルスペース内。
1.创建database_1数据库 mysql> create database database_1; Query OK, 1 row affected (0.02 sec) 2. 当前状态 mysql> show variables like '%innodb_file_per_table'; +-----------------------+-------+ | Variable_name | Value | +-----------------------+-------+ | innodb_file_per_table | ON | +-----------------------+-------+ 1 row in set (0.01 sec) 3. 创建表 mysql> create table t1(id int(11)); Query OK, 0 rows affected, 1 warning (0.05 sec) 4. 查看ibd文件 root@hxl-PC:/var/lib/mysql/database_1# ls t1.ibd root@hxl-PC:/var/lib/mysql/database_1# 5. 关闭innodb_file_per_table后在创建表 mysql> set global innodb_file_per_table=0; Query OK, 0 rows affected (0.01 sec) mysql> create table t2(id int(11)); Query OK, 0 rows affected, 1 warning (0.05 sec) 6. 查看ibd文件 root@hxl-PC:/var/lib/mysql/database_1# ls t1.ibd
innodb_page_size が追加され、このパラメータによりデフォルトのページ サイズを 4K、8K、
を使用して 4K、8K、または 16K に設定できます。 InnoDB は、さまざまな目的を達成するために多くのタイプのページを設計しました。InnoDB ストレージ エンジンの一般的なページ タイプは次のとおりです:
#非圧縮バイナリ ラージ オブジェクト ページ
mysql> show status like 'innodb_page_size'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | Innodb_page_size | 16384 | +------------------+-------+ 1 row in set (0.00 sec) mysql>
##名前
機能ファイルheader | |
---|---|
ページヘッダー | は、ページのステータス情報を記録します。ストレージ情報、最初のレコードの位置 |
#InnoDB の各データ ページには 2 つの仮想行レコードがあり、レコード境界を制限するために使用されます | |
実際に格納された行データ情報 | |
空き領域、リンク リスト構造 | |
# レコードの相対的な場所を格納します | |
innodb はこれを使用して、ページがディスクに完全に書き込まれました |