前回の記事では、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 になります。 以下もご興味があるかもしれません:
|
<<: Linux でのスケジュールされたタスクと遅延タスクの詳細な説明
>>: JavaScript 関数のパフォーマンスを測定するさまざまな方法の比較
ストアドプロシージャとは簡単に言えば、これは強力で、JAVA 言語のメソッドに似た比較的複雑な論理関...
データは貴重なものであることは誰もが知っています。データをバックアップしなければ、データをそのまま放...
コードは次のようになります。 <!DOCTYPE html> <html> ...
<br />最近、UCDChina は「インターフェース上のテキストに注意を払う」という...
目次1. 使用2. メッセージポップアップウィンドウが繰り返し表示される問題を解決する1. 使用Vu...
この記事を読む前に、ボリューム、バインドマウント、tmpfs マウントの基本を理解しておいてください...
目次1. Tomcatを監視する方法2. Java独自の監視コマンド3. Tomcatのトラブルシュ...
データは企業の中核資産であり、企業にとって最も重要なタスクの 1 つです。注意しないと、データが意図...
Linux システムに触れたばかりの初心者として、VMware 仮想マシンに CentOS6.5 シ...
序文mysql がデフォルトのデータベース パスを変更したため、サービスを開始できませんでした。ログ...
導入Xiao A がコードを書いていたところ、DBA Xiao B が突然、「急いでユーザー固有情報...
ネットで変更方法をいろいろ調べたのですが、うまくいきませんでした。後で大物から見て削除しました。フォ...
目次テーブル定義の自動増分 ID InnoDBシステムはrow_idを自動的に増加させるシドInno...
Redisイメージをダウンロードする docker pull yyyyttttwww/redis を...
MySQL では、データベースはデータ ディレクトリ内のディレクトリに対応します。データベース内の各...