MyISAM と InnoDB は、MySQL で最も一般的なストレージ エンジンです。前回の記事では、InnoDB と MyISAM の違いについて説明しました。MyISAM はトランザクションをサポートしていないため、堅牢なトランザクション ストレージ エンジンを使用する必要がある場合は、InnoDB が最適な選択肢になります。 Innodb は、マルチバージョン同時実行制御 (MVCC) を通じて高い同時実行性を実現し、4 つの SQL 標準分離レベルを実装します。デフォルトは InnoDB をデフォルトのエンジンとして設定する方法:
InnoDB 共通構成パラメータ: #InnoDB はデータ ディクショナリと内部データ構造のバッファ プールを格納します。16 MB あれば十分な大きさです。 innodb_追加メモリプールサイズ = 16M #InnoDBは、データ、インデックス、ロック、挿入バッファ、データ辞書などのキャッシュに使用されます。#専用のDBサーバーで、InnoDBエンジンが主なシナリオである場合は、通常、物理メモリの50%に設定できます。 #非専用 DB サーバーの場合は、まずメモリの 1/4 に設定してみて、問題があれば調整してください。#デフォルト値は 8M で、これは非常に悪いです。多くの人が InnoDB は MyISAM ほど良くないと考えるのもこれが理由です。innodb_buffer_pool_size = 4G #InnoDB 共有テーブルスペースの初期化サイズは、デフォルトは 10MB ですが、これも非常に扱いにくいため、1GB に変更し、innodb_data_file_path = ibdata1:1G:autoextend で自動的に拡張します。 #このオプションがわからない場合は、1に設定することをお勧めします。これにより、データの信頼性がより保護され、パフォーマンスに一定の影響がありますが、制御可能です innodb_flush_log_at_trx_commit = 1 #InnoDB ログ バッファは通常 64MB に設定すれば十分です innodb_log_buffer_size = 64M #InnoDB redo ログのサイズは通常 256MB で十分です innodb_log_file_size = 256M #InnoDB redo ログ ファイル グループ。通常は 2 に設定すれば十分です。innodb_log_files_in_group = 2 #管理を容易にするために InnoDB の独立テーブルスペース モードを有効にする innodb_file_per_table = 1 # 管理者が表示や監視などを行うために InnoDB のステータス ファイルを有効にします。innodb_status_file = 1 #トランザクションの効率を向上させるために、トランザクション分離レベルを READ-COMMITTED に設定します。通常、トランザクションの一貫性要件は満たされます。transaction_isolation = READ-COMMITTED その他の構成オプションも注目に値します。 #同時接続の最大数を設定します。フロントエンドプログラムがPHPの場合は、適切に増やすことができますが、あまり増やしすぎないようにしてください。#フロントエンドプログラムが接続プールを使用する場合は、接続が多すぎないように適切に調整できます。max_connections = 60 #接続エラーが頻繁に発生してもフロントエンドホストがmysqlによって拒否されるのを防ぐために、接続エラーの最大数を適切に増やすことができます。max_connect_errors = 100000 #遅いクエリのしきい値を設定します。最小値を1秒に設定することをお勧めします long_query_time = 1 # 一時テーブルの最大値を設定します。これは各接続に割り当てられます。あまり大きく設定することはお勧めできません。max_heap_table_size と tmp_table_size は同じサイズに設定する必要があります。max_heap_table_size = 96M tmp_table_size = 96M #各接続はソート、接続、その他のバッファを割り当てます。通常は 2MB に設定すれば十分です。sort_buffer_size = 2M 結合バッファサイズ = 2M 読み取りバッファサイズ = 2M 読み取りバッファサイズ = 2M # パフォーマンスに悪影響を与える可能性があるため、クエリキャッシュをオフにすることをお勧めします。query_cache_size = 0 #メインDBがInnoDBの場合、MyISAMのkey_buffer_sizeは小さく設定できます。8MBで十分です。#メインDBがMyISAMの場合、大きく設定できますが、4Gを超えてはいけません。 #ここでは、MyISAMエンジンを使用しないことを強くお勧めします。デフォルトでは、InnoDBエンジンを使用します。key_buffer_size = 8M #接続タイムアウトしきい値を設定します。フロントエンド プログラムが短い接続を使用する場合は、これら 2 つの値を短くすることをお勧めします。#フロントエンド プログラムが長い接続を使用する場合は、これら 2 つのオプションを直接コメント アウトして、既定の構成 (8 時間) を使用できます。 インタラクティブタイムアウト = 120 待機タイムアウト = 120 InnoDB エンジン データ テーブル設計に関するいくつかの提案:
InnoDB ロックの種類 InnoDBストレージエンジンは、次の2つの標準的な行レベルロックを実装しています。
共有ロックと排他ロックの互換性 知らせ: (1)SロックとXロックはともに行ロックです。互換性とは、同じレコード(行)上のロックの互換性を指します。 (2)トランザクションT1はすでに行Rの共有ロックを取得している。別のトランザクションT2はすぐに行Rの共有ロックを取得できる。この状況をロック互換性と呼ぶ。トランザクション T3 が行 R の排他ロックを取得したい場合、トランザクション T1 と T2 が行 R の共有ロックを解放するまで待機する必要があります。この状況はロックの非互換性になります。 要約する 以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。 以下もご興味があるかもしれません:
|
<<: カスタム Docker イメージを作成するための Dockerfile の詳細な説明と CMD と ENTRYPOINT 命令の比較
>>: JavaScript ベースのシンプルな計算機の実装
目次同時シナリオ書き込む読む読む読み取り-書き込みと書き込み-読み取りMySQL のロック行レベルロ...
serializableシリアル化(問題なし)トランザクションは順次実行する必要があります。前のトラ...
Jellyka Beesアンティーク手書き [ank]* ジェリーカ・カティカップケーキ LHF ジ...
目次1. ブロックスコープ1.1. let は var を置き換える1.2. グローバル定数とスレッ...
1.Jenkinsのインストール手順: https://www.jb51.net/article/1...
開発の問題点開発プロセスでは、データベース フィールドが頻繁に変更されるため、RD 環境と QA 環...
最近、cronスケジュールタスク用のdockerを作りたいと思っており、Dockerfileで次のよ...
1. HTMLファイルでechartをインポートする <!-- echarts をインポート ...
目次必要コアアイデアReactでスロットを実装する2つの方法必要コンポーネントを自分で書きました。コ...
NginxのGeoモジュールの紹介geo ディレクティブは、ngx_http_geo_module ...
この記事では、参考までに、centOSにmysql5.7をインストールする詳細な手順を紹介します。具...
目次序文🌟 1. APIの紹介2. 複数のデータソースの監視3. リスニングアレイ4. 監視対象5....
目次1. Ant Design Vueを統合する2. コンポーネントの使用1. 完全な引用2. コン...
この記事では、MySQL の左結合における on 条件と where 条件の使用法の違いを例を使って...
この記事では、例を使用して、データベースを削除せずに MySQL 内のすべてのテーブルをすばやく削除...