MySQL ストレージ エンジンの基礎

MySQL ストレージ エンジンの基礎

前回の記事では、MySQL トランザクションについて説明しました。これで、MySQL トランザクションについて誰もが知っているはずです。トランザクションの ACID 原則を覚えていますか?覚えていない人は、「MySQL トランザクションの概要」を確認してください。実際、より正確には、MySQL InnoDB ストレージ エンジンです。MySQL では、InnoDB ストレージ エンジンのみがトランザクションをサポートしているためです。これを見て、友人の中には次のような疑問を持つ人もいるかもしれません。

ストレージ エンジンとは何ですか?

MySQL にはどのようなストレージ エンジンがありますか?

各ストレージエンジンの特徴と違いは何ですか?

次に、これらの質問を一つずつ見ていきましょう。

ストレージ エンジンとは何ですか?

簡単に言うと、MySQL はデータを保存するために使用されます。ストレージ エンジンは、ファイルを保存する方法とそれに付属する一連のツールと考えることができます。各ファイル保存方法の特性が、ストレージ エンジンの特性となります。

たとえば、メモリ ストレージ エンジンはデータをメモリに保存します。その利点は、読み取りと書き込みが高速であることです。ただし、データはディスクに永続化されず、失われやすいなどです。

MySQL のストレージ エンジン

MySQL 5.7 では、MySQL でサポートされているストレージ エンジンは次のとおりです。

翻訳

マイISAM

メモリ

CSVファイル

アーカイブ

ブラックホール

マージ:

フェデレーション

以下では、よく使われるストレージエンジンのみ紹介します。紹介されていない他のストレージエンジンに興味がある場合は、自分で検索することができます。

InnoDB: トランザクション操作 (開始、コミット、ロールバック コマンドなど) をサポートし、行レベルのロックをサポートします。テーブル ロックと比較すると、行レベルのロックは粒度が細かく、同時実行性が向上します。ここには多くの詳細があります。次回は別の記事を書きます) は、外部キー参照整合性制約をサポートします。 InnoDB ストレージ エンジンは、MySQL バージョン 5.7 のデフォルトのストレージ エンジンでもあります。欠点は、多くのストレージスペースを占有することです。

MyISAM: このストレージ エンジンは InnoDB ストレージ エンジンよりも占有スペースがはるかに少ないですが、テーブル ロックのみをサポートし、同時実行パフォーマンスがはるかに低く、トランザクションをサポートしていません。通常は読み取り専用アプリケーションでのみ使用されます。これは MySQL のオリジナルのストレージ エンジンです。

メモリ: このストレージ エンジンの最大の特徴は、すべてのデータがメモリに保存されることです。以前は「ヒープ」と呼ばれていました。
アプリケーション シナリオ: 主に、すぐにアクセスする必要がある、重要でないデータを保存します。なぜ重要なデータではないのでしょうか?すべてのデータがメモリに保存されるという理由だけで、安全ではないと解釈されることもあります。

CSV: まず、CSV について理解しましょう。CSV ファイルは、実際にはカンマで区切られたテキスト ファイルです。データ変換によく使用されます。このタイプはほとんど使用されず、インデックスをサポートしていません。

アーカイブ: アーカイブ ファイル。主に、あまり使用されない参照ファイルを保存するために使用されます。

例: このストレージ エンジンは主に、ストレージ エンジンを自分で作成する方法を示すために使用され、通常、実稼働環境では使用されません。

ストレージエンジンの選択方法

上記の比較から、InnoDB ストレージ エンジンがトランザクション、外部キー、行レベルのロックをサポートしていることがわかるはずです。オンライントランザクション処理を必要とするアプリケーションに最適です。ストレージ エンジンを選択する際、特別な理由がない場合は、ストレージ エンジンとして InnoDB を選択することをお勧めします。

1. テーブルを作成するときにストレージ エンジンを指定できます。指定しない場合は、デフォルトのストレージ エンジンが使用されます。

テーブル t_base_user を作成します(
oid bigint(20) NULLでない主キー auto_increment コメント "",
created_at 日時 null コメント ''
)エンジン=innodb

2. (方法1) テーブルのストレージエンジンを表示する

mysql> "t_base_user" のようなテーブルステータスを表示します \G;
************************** 1. 行 ****************************
    名前: t_base_user
   エンジン: InnoDB
   バージョン: 10
 行形式: 動的
    行数: 0
平均行長: 0
 データ長: 16384
最大データ長: 0
インデックスの長さ: 0
  データ空き容量: 0
自動増分: 1
 作成時間: 2017-12-17 20:10:24
 更新時間: NULL
 チェック時間: NULL
  照合順序: utf8_unicode_ci
  チェックサム: NULL
作成オプション: 
   コメント: 
セット内の1行(0.01秒)

3. (方法2) テーブルのストレージエンジン情報を表示する

mysql> show テーブル t_base_user\G を作成します。
************************** 1. 行 ****************************
  テーブル: t_base_user
テーブルの作成: CREATE TABLE `t_base_user` (
`oid` bigint(20) NOT NULL AUTO_INCREMENT、
`created_at` 日時 デフォルト NULL、
主キー (`oid`)
) エンジン=InnoDB デフォルト文字セット=utf8 照合=utf8_unicode_ci
セット内の 1 行 (0.00 秒)

もう一つの注意点は、テーブルのストレージ エンジンを変更することは推奨されないということです。テーブルを作成するときは、どのストレージ エンジンを使用するかを検討する必要があります。

本日の注文

コマンド: show engines;

標準構文: show stroage engines;

ストレージはオプションです。

機能: 現在の MySQL バージョンでサポートされているストレージ エンジンを表示します。

例 (MySQL バージョン: 5.7.20):

mysql> ストレージエンジンを表示します。
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| エンジン | サポート | コメント | トランザクション | XA | セーブポイント |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| MRG_MYISAM | YES | 同一の MyISAM テーブルのコレクション | NO | NO | NO |
| CSV | はい | CSV ストレージ エンジン | いいえ | いいえ | いいえ |
| MyISAM | はい | MyISAM ストレージ エンジン | いいえ | いいえ | いいえ |
| BLACKHOLE | はい | /dev/null ストレージ エンジン (書き込んだものはすべて消えます) | いいえ | いいえ | いいえ |
| メモリ | はい | ハッシュベース、メモリに保存、一時テーブルに便利 | いいえ | いいえ | いいえ |
| InnoDB | デフォルト | トランザクション、行レベルのロック、外部キーをサポート | はい | はい | はい |
| アーカイブ | はい | アーカイブ ストレージ エンジン | いいえ | いいえ | いいえ |
| PERFORMANCE_SCHEMA | YES | パフォーマンス スキーマ | NO | NO | NO |
| FEDERATED | NO | フェデレーテッド MySQL ストレージ エンジン | NULL | NULL | NULL |
+--------------------+---------+---------------------------------------------------------------+--------------+-------+------------+
セット内の行数は 9 です (0.00 秒)

使用シナリオ: この機能は、現在のデータベース バージョンでサポートされているストレージ エンジンとデフォルトのストレージ エンジンを表示する場合に非常に便利です。

エンジン: ストレージ エンジン名。

サポート: 現在の MySQL サーバー バージョンがストレージ エンジンをサポートしているかどうかを示します。YES はサポートされていることを意味し、NO はサポートされていないことを意味します。

コメント: Innodbなどのストレージエンジンの特性

トランザクション、行レベルのロックなどをサポートします。

トランザクション: トランザクションをサポートするかどうか。YES はサポートを意味し、No はサポートしないことを意味します。

XA と Savepoints: これら 2 つの属性はトランザクションに関連しています。トランザクションが Yes の場合、これら 2 つの属性は意味を持ちますが、それ以外の場合は両方とも NO になります。

以下もご興味があるかもしれません:
  • MySQL InnoDBストレージエンジンについて簡単に説明します
  • MySQL ストレージエンジンの簡単な紹介
  • MySql ストレージ エンジンとインデックスに関する知識のまとめ
  • MySQL MyISAM デフォルト ストレージ エンジンの実装原則
  • MySQLでよく使われる4つのストレージエンジンについて簡単に説明します。
  • MySQL ストレージエンジン InnoDB の設定と使用方法の説明
  • MySQL ストレージ エンジン MyISAM と InnoDB の違いの概要
  • MySQL共通ストレージエンジンの機能と使用方法の詳細な説明
  • 一般的な MySQL ストレージ エンジンとパラメータ設定およびチューニングの紹介
  • MySQLのストレージエンジンについてお話しましょう

<<:  Linux でのスケジュールされたタスクと遅延タスクの詳細な説明

>>:  JavaScript 関数のパフォーマンスを測定するさまざまな方法の比較

推薦する

Linux でファイルの種類を理解して識別する方法

序文ご存知のとおり、Linux ではハードディスクやグラフィック カードなどすべてがファイルです。 ...

Node.js における npx コマンドの使用法とシナリオ分析

npx 使用チュートリアル今晩、 Vue-Cli勉強していたところ、ふと最新の@4.xxバージョンを...

Reactはtodolistの追加、削除、変更、クエリを実装します

目次ToDoリストを例に挙げましょうディレクトリは次のとおりですアプリ入力.jsリスト.jsアイテム...

負荷分散と動的および静的分離操作を実現するDocker NginxコンテナとTomcatコンテナ

Tomcat8 イメージをダウンロード [root@localhost ~]# docker sea...

ウェブフロントエンド開発者が知っておくべき 9 つの実用的な CSS プロパティ

1. 角を丸くする今日の Web デザインは、常に最新の開発テクノロジーに追随しており、HTML5 ...

React で Antd の Form コンポーネントを使用してフォーム機能を実装する方法

1. 構造部品1. フォームには、入力コントロール、標準フォーム フィールド、ラベル、ドロップダウン...

docker compose idea CreateProcess error=2 システムは指定されたファイルを見つけることができません

Docker の作成Compose の紹介Compose は、マルチコンテナ Docker アプリケ...

Vue スキャフォールディング プロジェクトを作成するための詳細な手順

vue スキャフォールディング -> vue.cli大規模で完全に機能する Vue プロジェク...

Vue+elementUI コンポーネントは、折りたたみ可能な動的レンダリングのマルチレベル サイドバー ナビゲーションを再帰的に実装します。

かなり前に実装された機能ですが、クリックすると選択したメニュー項目の背景色が白くなることに気付きまし...

10 HTML テーブル関連タグ

実際、多くの人が「テーブルは絶対に使用すべきではないと聞いたことがある」と言いますが、これは絶対に間...

MySQLスタートアップが起こした事故の実録

目次背景MySQLが完全に起動したかどうかを確認する方法事故最初の変更2回目の改訂要約するMySQL...

Linux dirnameコマンドの具体的な使い方

01. コマンドの概要dirname - ファイル名からディレクトリ以外のサフィックスを削除しますd...

仮想マシンに Linux rhel7.3 オペレーティング システムをインストールする (具体的な手順)

仮想化ソフトウェアをインストールする仮想マシンにオペレーティング システムをインストールする前に、ホ...

MySQL 5.7 共通データ型

——「MySQL in Simple Terms (第 2 版)」からのメモ数値型整数型バイト最小最...

WMLとは何ですか?

WML (ワイヤレス マークアップ言語)。これは HTML から派生したマークアップ言語ですが、W...