Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tinh chỉnh hiệu suất InnoDB

innodb_buffer_pool_size của bạn nên được đặt thành số lượng dữ liệu và chỉ mục InnoDB mà bạn có. Chạy truy vấn này và nó sẽ cho bạn biết cài đặt được đề xuất tối thiểu cho Dữ liệu Innodb hiện tại của 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;

Nếu dữ liệu InnoDB của bạn vượt xa RAM được cài đặt trên máy chủ DB, tôi khuyên bạn nên sử dụng 75% RAM đã cài đặt trên hộp. Vì vậy, nếu bạn có máy chủ 16GB, hãy sử dụng 12G làm innodb_buffer_pool_size.

Bạn cũng phải đặt innodb_log_file_size thành 25% innodb_buffer_pool_size hoặc 2047M, nhỏ hơn bao giờ hết. Để thay đổi tệp ib_logfile0 và ib_logfile1, bạn phải:

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

Nếu bạn đang sử dụng MySQL 5.5, hãy đặt như sau:

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

Nếu bạn vẫn giữ lại dữ liệu MyISAM, hãy chạy truy vấn này để có cài đặt lý tưởng cho 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;

CẬP NHẬT 2013-02-13 12:55 EDT

Gần đây, tôi đã học được cách không đặt innodb_io_capacity rất cao, nếu có. Điều này đặc biệt đúng trên phần cứng hàng hóa và máy ảo:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:SELECT sẽ kiểm tra nhiều hơn MAX_JOIN_SIZE hàng

  2. Truy vấn MySQL trong đó THAM GIA phụ thuộc vào CASE

  3. Không thể chuyển đến hàng 0 trên chỉ mục kết quả 13 của MySQL

  4. Làm thế nào để sử dụng regex trong MySQL?

  5. Lặp lại một Truy vấn chèn trong PHP