MySQL テーブルスペースとは何ですか?

MySQL テーブルスペースとは何ですか?

今日皆さんにお伝えしたいトピックは、「皆さんがよく話題にするテーブル スペースとは一体何でしょうか。データ テーブルとは一体何でしょうか。」です。

これは実際には概念的な知識ポイントであり、知識を拡張するものと見なす必要があります。必要なのは、関連する概念を理解し、関連するパラメータの印象を残すことだけです。

1. テーブルとは何ですか?

MySQL を使用したことがある人なら誰でも、MySQL のデータがデータ テーブルに保存されることを直感的に知っています。

たとえば、Update SQL は次のようになります。

ユーザーを更新し、username = 'Daydream'、id = 999 に設定します。

ユーザーデータテーブル内のID 1のレコードのユーザー名列を「Daydream」に変更します。

ここでのユーザーは実際にはデータ テーブルです。もちろん、これは重要な点ではありません。私が言いたいのは、データ テーブルは実際には論理的な概念であるということです。以下で説明するテーブル スペースは物理的な概念です。

2. テーブルスペースとは何ですか?

「InnoDB ストレージ エンジンでは、データはテーブルスペースに従って整理され、保存されます。」という文章を見たことがあるでしょうか。実際、そこには次の意味があります。テーブルスペースは、実際の物理ファイルであるテーブルスペース ファイルです。

MySQL はこのように設計および設定されているため、なぜテーブルスペースと呼ばれるのか、またなぜテーブルスペースがディスク上の物理ファイルに対応するのかについて心配する必要はありません。概念をそのまま受け入れてください。

MySQL には多くの種類のテーブルスペースがあります。一緒に見ていきましょう。

3. sysテーブルスペース

MySQL システム テーブルスペースは次のように表示できます。

値の部分は、名前:サイズ:属性で構成されます。

デフォルトでは、MySQL は ibdata1 という名前のファイルを 12MB のサイズで初期化し、データの増加に応じて自動的に拡張します。

この ibdata1 ファイルは、システム テーブルスペース、デフォルト テーブルスペース、デフォルト テーブルスペースの物理ファイル、および一般的な共有テーブルスペースです。

この共有表領域に関して、直感的には、この表領域に複数のテーブルのデータを格納できる場合は共有表領域と呼ぶことができるため、システム表領域を共有表領域と考えることができます。

4. sysテーブルスペースを構成する

システムテーブルスペースの数とサイズは、起動パラメータ innodb_data_file_path で設定できます。

# 私の.cnf
[mysqld]
innodb_data_file_path=/dir1/ibdata1:2000M;/dir2/ibdata2:2000M:自動拡張

5. テーブルごとのファイル テーブルスペース

各データベース テーブルに個別のテーブルスペース ファイルを持たせたい場合は、パラメータ innodb_file_per_table を使用して設定できます。

このパラメータは MySQL 5.6 以降でのみ使用できます。

設定ファイルを通じて

[mysqld]
innodb_file_per_table=オン

次のコマンドを使用することもできます

mysql> SET GLOBAL innodb_file_per_table=ON; 

これを ON に設定すると、InnoDB ストレージ エンジンによって生成されたテーブルには、独自の独立したテーブルスペース ファイルが含まれるようになります。

独立テーブルスペースファイルの命名規則: テーブル名.ibd

知らせ:

独立した表領域ファイルには、表に対応するデータ、インデックス、および挿入バッファ ビットマップのみが格納されます。

UNDO 情報、挿入バッファ インデックス ページ、二重書き込みバッファなどの残りの情報は、引き続きデフォルトの表領域、つまり共有表領域に配置されます。

元に戻す、挿入バッファ、二重書き込みバッファが何であるか理解していなくても問題ありません。大まかなスケジュールに沿って、第41回と第42回の記事でシェアさせていただきます。ここで理解しておく必要があるのは、innodb_file_per_table=ON に設定しても共有テーブルスペースのサイズは拡大し続け、undo を使用してロールバックを続行しても共有テーブルスペースのサイズは縮小されないということです。

私のテーブルスペースファイルを確認してください:

最後に、テーブルごとにこのファイルの利点と欠点を簡単に説明しましょう。

アドバンテージ:

  • フォールト トレランスを向上します。テーブル A のテーブル領域が破損しても、他のテーブル領域は影響を受けません。 s
  • MySQL Enterprise Backup を使用すると、他の InnoDB テーブルの使用を妨げることなく、ファイルごとのテーブルスペースで作成されたテーブルを迅速にバックアップまたは復元できます。

欠点:

これは fsync システム コールに適していません。テーブルスペース ファイルを使用する場合、1 回のシステム コールでデータのフラッシュを完了できますが、テーブルスペース ファイルを複数に分割する場合は、元の fsync は、関係するすべての表領域ファイルに対して実行される fsync になり、fsync の数が増加する可能性があります。

6. 一時テーブルスペース

一時表領域は、ユーザーによって作成された一時表とディスク上の内部一時表を格納するために使用されます。

パラメータ innodb_temp_data_file_path は、以下に示すように、一時表領域の名前、サイズ、および仕様属性の一部を定義します。

一時テーブルスペースファイルが保存されているディレクトリを表示します

7. UNDO表領域

undolog について聞いたことがあると思います。プログラムがトランザクションをロールバックする場合、基盤となる MySQL は実際にこれらの undo 情報を通じてロールバックを支援します。

MySQL 設定には、undolog ログ ファイルを保存するために特別に使用できるテーブル スペースがあります。

ただし、MySQL 設定では、undolog はデフォルトでシステム テーブルスペースに配置されます。

MySQL が新しくインストールされた場合は、次のコマンドを実行して MySQL UNDO テーブルスペースの使用状況を表示できます。

ご覧のとおり、MySQL には 2 つの UNDO ログ テーブルスペースがあります。

つまり、UNDO はデフォルトのシステム表領域から UNDO ログ専用表領域に転送されます。

では、デフォルト構成を使用して、UNDO ログをシステム テーブルスペースに配置する必要がありますか?それとも、UNDO 表領域に配置する必要がありますか?

これは実際には、サーバーが使用するストレージ ボリュームの種類によって異なります。

SSD ストレージを使用する場合は、UNDO 情報を UNDO 表領域に保存することをお勧めします。

上記はMySQLテーブルスペースとは何かについての詳細な内容です。MySQLテーブルスペースの詳細については、123WORDPRESS.COMの他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • MySQL でテーブルスペースの断片化を解消する詳細な例
  • MySQLテーブルの断片化の原因とクリーンアップを分析する
  • MySQL ダーティ ページ フラッシュとテーブル スペースの縮小の原理の分析
  • MySQL InnoDB テーブルスペース暗号化の例の詳細な説明
  • MySQL オンラインリカバリ UNDO テーブルスペース 実戦記録
  • MySQL 5.7 一時テーブルスペースの詳細な分析
  • MySQL InnoDB テーブルスペースのアンロード、移行、ロードの使用方法
  • MySQL で、すべてのデータベースが占有するディスク容量と、単一データベース内のすべてのテーブルのサイズを照会する SQL ステートメント
  • MySQL テーブルスペースの断片化の概念と関連する問題の解決策

<<:  HTMLフォーム入力監視の詳細な理解

>>:  JS で async await をエレガントに使用する方法

推薦する

MySQL OOM (メモリオーバーフロー) の解決策

OOM は「Out Of Memory」の略で、メモリオーバーフローを意味します。メモリ オーバーフ...

Vueのprops設定の詳細な説明

<テンプレート> <div class="demo">...

60件のページング事例と優れた実践例を推奨

<br />構造と階層により複雑さが軽減され、読みやすさが向上します。記事やサイトが整理...

nginxはdockerコンテナ内に設定ファイルを自動的に生成します

企業が Docker 自動デプロイメントを構築する場合、Docker の実行時にコンテナ内の設定ファ...

Linux デスクトップ用に Openbox を設定する方法 (推奨)

この記事は、「24 Days of Linux Desktop」の特別シリーズの一部です。 Open...

vue の webpack -v エラー解決の概要

XiaobaiはVueについて学び、次にwebpackについて学び、そしてさまざまなものをインストー...

MySQL での utf8mb4 照合の例

MySQL における一般的な utf8mb4 ソート規則は次のとおりです。 utf8mb4_0900...

スタートアップ企業が丹念に作り上げた優れたウェブデザイン17選

スタートアップ企業は、型破りな仕事のやり方、ユニークなビジネスモデル、特徴的な製品やサービス、パーソ...

異なるページ間のJavaScriptデータ転送(URLパラメータ取得)

Web ページでは、あるページに情報を入力すると、別のページにジャンプし、入力した情報が別のページ...

Alpine Dockerイメージフォント問題解決操作

1. フォントを実行し、フォント フォルダーを開いて、使用するフォント ファイルを見つけます。 2....

空のパスがページのパフォーマンスに与える影響に対する解決策

数日前、Google Reader で Yu Bo さんが共有した投稿「空のパスがページのパフォーマ...

ubuntu18.04 での qt5.12.8 のインストールと環境設定に関する詳細なチュートリアル

環境システム: Ubuntu 18.04ソフトウェア: qt5.12.8 1. インストールパッケー...

MySQLの日付と時刻関数の使用の概要

この記事はMySQL 8.0に基づいていますこの記事では、日付と時刻の操作のための MySQL 関数...

MySQL 8.0 の非表示列に対する基本操作

目次01 非表示の列を作成する02 非表示の列に対する基本操作03 非表示の列メタデータ04 主キー...

HTMLページにビデオを挿入する方法の概要

ページでビデオ タグを使用する場合は、Ogg Theora または VP8 (これに問題がない場合)...