Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Poprawki wydajności InnoDB

Twój innodb_buffer_pool_size powinna być ustawiona na ilość danych i indeksów InnoDB, które posiadasz. Uruchom to zapytanie, a wyświetli się minimalne zalecane ustawienie dla bieżących danych Innodb w mysql

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;

Jeśli twoje dane InnoDB znacznie przekraczają zainstalowaną pamięć RAM na serwerze DB, polecam 75% zainstalowanej pamięci RAM na pudełku. Tak więc, jeśli masz serwer 16 GB, użyj 12G jako innodb_buffer_pool_size.

Należy również ustawić innodb_log_file_size na 25% innodb_buffer_pool_size lub 2047M, która zawsze jest mniejsza. Aby zmienić plik ib_logfile0 i ib_logfile1, musisz:

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

Jeśli używasz MySQL 5.5, ustaw następujące opcje:

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

Jeśli zachowasz dane MyISAM, uruchom to zapytanie, aby uzyskać idealne ustawienie dla 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;

AKTUALIZACJA 13.02.2013 12:55 EDT

Ostatnio nauczyłem się nie ustawiać innodb_io_capacity bardzo wysoki, jeśli w ogóle. Dotyczy to zwłaszcza zwykłego sprzętu i maszyn wirtualnych:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać listę widoków MySQL?

  2. JSON_OBJECTAGG() – Utwórz obiekt JSON z wyników zapytania w MySQL

  3. Grupa mySQL według nazwy użytkownika

  4. mysql_num_rows():podany argument nie jest prawidłowym zasobem wynikowym MySQL

  5. ORDER BY o równej wartości w MySQL