Mysql InnoDB

4779 ワード

Innodbキー特性:バッファを挿入し、2回書き込み、適応ハッシュインデックス.->性能と信頼性.
にじしゃ
メモリ内のdoublewrite bufferサイズが2 MBの2つの部分と、物理ディスク上の共有表領域における連続する128ページの2つの領域extentである2 MBの2つの部分からなる.バッファプールの汚れたページがリフレッシュすると、直接ディスクを書くのではなく、memcpy関数で汚れたページをメモリのdoublewrite bufferにコピーし、それを2回に分けて、共有空間テーブルの物理ディスクに1 MBずつ書く.doublewriteページの書き込みが完了するからdoublewriteページを各表領域に書き込む.
 
show global status like 'innodb_dblwr%'\G;
ZFSのような書き込み失効防止機構を提供するファイルシステムでは、二次書き込み機能をオンにする必要はない.
 
Masterプライマリサーバがオンになっていることを確認します.
,
てきおうハッシュ
ハッシュは非常に速い検索方法であり、一般的な時間複雑度はO(1)である.接続クエリー、SqlServer、Oracleのハッシュ接続hash joinによく使用されます.ハッシュインデックスはサポートされていませんMysql Heapエンジンのデフォルトのインデックスタイプはハッシュです.Innodbは、適応ハッシュという別の実装を提供する.有効にすると、読み取り書き込み速度が2倍になり、補助インデックスの接続操作に対して性能が5倍に向上する.その設計思想は自己最適化であり、DBA調整は不要である.
innodb_adaptive_hash_indexは、このプロパティを無効または起動する.デフォルトではオン
 
INNODBはMySQLと同様、GNU GPLv 2でリリースされる.
InnoDBには複数のメモリブロックがあり、これらのメモリブロックは大きなメモリプールを構成していると考えられ、以下の作業を完了します.
1.すべてのプロセス/スレッドがアクセスする必要がある複数の内部データ構造を維持する.
2.ディスク上のデータをキャッシュし、迅速に読み取ることができる.
3.REDOログ・バッファ.
 
バックグラウンド・スレッドの主な役割は、メモリ・プール内のデータのリフレッシュです.バッファ・プール内のメモリ・キャッシュが最近のデータであることを保証し、変更されたデータ・ファイルをディスク・ファイルにリフレッシュします.
 
デフォルトでは、InnoDBストレージエンジンには7つのバックグラウンドスレッドがあります.4個IO、1個master、1個ロックモニタ、1個エラーモニタ.IOスレッドの数はプロファイル内のinnodb_file_io_threadsパラメータ制御、デフォルト4
show engine innodb status\G;
 
InnoDB
FROM:http://dev.mysql.com/doc/refman/5.1/zh/storage-engines.html#innodb-configuration
InnoDBストレージエンジンは、メインメモリにデータとインデックスをキャッシュするために独自のバッファプールを維持します.InnoDBは、複数のファイル(または元のディスクパーティション)を含むテーブル&インデックスを1つのテーブルスペースに格納します.InnoDBテーブルは、ファイルサイズが2 GBに制限されたオペレーティングシステム上でも任意のサイズであってもよい.InnoDBには1 TBを超えるデータが格納されており、他のサイトでは1秒あたり800回の挿入/更新の負荷をInnoDBで処理しているものもあります.InnoDBストレージエンジンが管理する2つの重要なディスクベースのリソースは、InnoDB表領域データファイルとそのログファイルです.InnoDB構成オプションがない場合、MySQLはibdata 1という10 MBサイズの自動拡張データファイルをMySQLデータディレクトリの下に作成し、ib_という2つの名前のlogfile 0とib_logfile 1の5 MBサイズのログファイル.デフォルト設定として同じフィーチャーを持つ表領域を明確に作成するには、[mysqld]innodb_data_file_path=ibdata 1:10 M:autoextendこの設定はibdata 1という拡張可能なサイズの10 MBの個別ファイルを構成します.ファイルの場所が指定されていないので、デフォルトはMySQLのデータディレクトリ内です.サイズサイズはMまたはG接尾辞で指定します.説明単位はMBまたはGBです.ibdata 1という固定サイズ50 MBのデータファイルとibdata 2サイズ50 MBという自動拡張ファイルをデータディレクトリに含み、このように構成できる:[mysqld]innodb_data_file_path=ibdata1:50M;ibdata 2:50 M:autoextend指定最大サイズ[mysqld]innodb_data_file_path=ibdata 1:10 M:autoextend:max:500 M指定ディレクトリInnoDBはデフォルトでMySQLデータディレクトリに表領域ファイルを作成します.場所を明確に指定するにはinnodb_を使用します.data_home_dirオプション.たとえば、ibdata 1とibdata 2という2つのファイルを使用しますが、/ibdataに作成するには、次のようにInnoDB:[mysqld]innodb_を構成します.data_home_dir =/ibdata    innodb_data_file_path=ibdata1:50M;ibdata 2:50 M:autoextendコメント:InnoDBはディレクトリを作成しませんので、サーバを起動する前に/ibdataディレクトリが存在することを確認してください.    [mysqld]# You can write your other MySQL server options hereinnodb_data_home_dir =# You can write your other MySQL server options here# ...# Data files must be able to hold your data and indexes.# Make sure that you have enough free disk space.innodb_data_file_path = ibdata1:10M:autoextend#innodb_data_file_path =/ibdata/ibdata1:2000M;/dr2/ibdata/ibdata2:2000M:autoextend## Set buffer pool size to 50-80% of your computer's memory,# but make sure on Linux x86 total memory usage is < 2GBinnodb_buffer_pool_size=1Ginnodb_additional_mem_pool_size=20Minnodb_log_group_home_dir =/dr3/iblogs#innodb_log_files_in_group = 2## Set the log file size to about 25% of the buffer pool sizeinnodb_log_file_size=250Minnodb_log_buffer_size=8M#innodb_flush_log_at_trx_commit=1innodb_lock_wait_timeout=50## Uncomment the next lines if you want to use them#innodb_thread_concurrency=5## Set buffer pool size to 50-80% of your computer's memory#set-variable = innodb_buffer_pool_size=70M#set-variable = innodb_additional_mem_pool_size=10M## Set the log file size to about 25% of the buffer pool size#set-variable = innodb_log_file_size=20M#set-variable = innodb_log_buffer_size=8 Mすべてのデータを同じ物理ディスクに配置しないと、データベースのパフォーマンスが向上します.ログ・ファイルをデータ・ファイルとは異なるディスクに配置することは、パフォーマンスに常にメリットがあります.32ビットGNU/Linux x 86では、メモリの使用量が高すぎないように注意する必要があります.glibcは、プロセスがスレッドスタックに蓄積され、サーバがクラッシュする可能性があります.次の式の値が2 GB以上の場合、システムは危機に直面します:innodb_buffer_pool_size+ key_buffer_size+ max_connections*(sort_buffer_size+read_buffer_size+binlog_cache_size)+ max_connections*2 MBスレッドごとに1つのスタック(通常は2 MBですが、MySQL ABバイナリ配布版では256 KBしかありません)を使用し、最悪の場合もsort_を使用します.buffer_size + read_buffer_sizeメモリを追加します.自分でMySQLをコンパイルし、32ビットWindowsで64 GBの物理メモリを使用することができます.InnoDB起動オプションでinnodb_buffer_pool_awe_mem_mbの説明.他のmysqldサーバパラメータを調整する方法[典型][mysqld]skip-external-lockingmax_connections=200read_buffer_size=1Msort_buffer_size=1M## Set key_buffer to 5 - 50% of your RAM depending on how much you use MyISAM tables, but keep key_buffer_size + InnoDB buffer pool size < 80% of your RAMkey_buffer_size=value