sql >> Databasteknik >  >> RDS >> Mysql

InnoDB prestandajusteringar

Din innodb_buffer_pool_size bör ställas in på mängden InnoDB-data och index du har. Kör den här frågan och den kommer att berätta för dig den rekommenderade minsta inställningen för mysqls nuvarande Innodb-data

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;

Om din InnoDB-data vida överstiger det installerade RAM-minnet på DB-servern rekommenderar jag 75 % av det installerade RAM-minnet på lådan. Så om du har en 16 GB server, använd 12G som innodb_buffer_pool_size.

Du måste också ställa in innodb_log_file_size till 25 % av innodb_buffer_pool_size eller 2047M, beroende på vilket som är mindre. För att ändra filen ib_logfile0 och ib_logfile1 måste du:

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

Om du använder MySQL 5.5, ställ in följande:

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

Om du kommer att behålla MyISAM-data kör den här frågan för den idealiska inställningen för 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;

UPPDATERING 2013-02-13 12:55 EDT

Jag har på sistone lärt mig att inte ställa in innodb_io_capacity mycket hög, om alls. Detta gäller särskilt för råvaruhårdvara och virtuella datorer:




  1. mysql_fetch_array hoppar över första raden

  2. Jämför strängar med en som har tomma utrymmen tidigare medan den andra inte har det

  3. Att använda en fråga resulterar i en annan fråga

  4. MySQL autoinkrement-kolumn hoppar med 10- varför?