sql >> データベース >  >> RDS >> Mysql

InnoDBのパフォーマンスの調整

    innodb_buffer_pool_size 持っているInnoDBデータとインデックスの量に設定する必要があります。このクエリを実行すると、mysqlの現在のInnodbデータの最小推奨設定が表示されます

    SELECT CONCAT(ROUND(KBS/POWER(1024,IF(pw<0,0,IF(pw>3,0,pw)))+0.49999),
    SUBSTR(' KMG',IF(pw<0,0,IF(pw>3,0,pw))+1,1)) recommended_innodb_buffer_pool_size
    FROM (SELECT SUM(index_length) KBS FROM information_schema.tables WHERE
    engine='InnoDB') A,(SELECT 3 pw) B;
    

    InnoDBデータがDBサーバーにインストールされているRAMをはるかに超える場合は、ボックスにインストールされているRAMの75%をお勧めします。したがって、16GBのサーバーを使用している場合は、12Gをinnodb_buffer_pool_sizeとして使用します。

    また、innodb_log_file_sizeをinnodb_buffer_pool_sizeの25%または2047Mのいずれか小さい方に設定する必要があります。ファイルib_logfile0およびib_logfile1を変更するには、次のことを行う必要があります。

    mysql -uroot -p -e"SET GLOBAL innodb_fast_shutdown = 0;"
    service mysql stop
    rm ib_logfile0 ib_logfile1
    service mysql start
    

    MySQL 5.5を使用している場合は、次のように設定します。

    innodb_read_io_threads=64
    innodb_write_io_threads=64
    innodb_io_capacity=20000 (set this to your device's IOPs)
    

    MyISAMデータを保持する場合は、key_buffer_sizeの理想的な設定についてこのクエリを実行します。

    SELECT CONCAT(ROUND(KBS/POWER(1024,IF(pw<0,0,IF(pw>3,0,pw)))+0.49999),
    SUBSTR(' KMG',IF(pw<0,0,IF(pw>3,0,pw))+1,1)) recommended_key_buffer_size
    FROM (SELECT SUM(index_length) KBS FROM information_schema.tables
    WHERE engine='MyISAM' AND table_schema NOT IN ('information_schema','mysql')) A,
    (SELECT 3 pw) B;
    

    UPDATE 2013-02-13 12:55 EDT

    最近、innodb_io_capacity> あるとしても、非常に高い。これは特にコモディティハードウェアとVMに当てはまります:




    1. mysqlは、繰り返し列の最初の行を除くすべての行にブランクを返すことを選択します

    2. PostgreSQL-GROUPBY句または集計関数で使用

    3. MySQLにvarbinaryを保存する方法は?

    4. ver.2 PyGreSQLエラー:from _pg import * ImportError:DLLのロードに失敗しました:指定されたモジュールが見つかりませんでした