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

Các phương pháp hay nhất về tối ưu hóa cơ sở dữ liệu MySQL

"Phương pháp hay nhất" là:

  1. Đo lường hiệu suất, cô lập hệ thống con có liên quan cũng như bạn có thể.
  2. Xác định nguyên nhân gốc rễ của nút thắt cổ chai. Bạn có bị ràng buộc I / O không? CPU bị ràng buộc? Bộ nhớ bị ràng buộc? Chờ khóa?
  3. Thực hiện các thay đổi để giảm bớt nguyên nhân gốc rễ mà bạn đã phát hiện ra.
  4. Đo lại để chứng minh rằng bạn đã khắc phục được nút thắt cổ chai và ở mức độ nào .
  5. Chuyển đến bước 2 và lặp lại nếu cần cho đến khi hệ thống hoạt động đủ nhanh.

Đăng ký nguồn cấp dữ liệu RSS tại http://www.mysqlperformanceblog.com và đọc các bài báo lịch sử của nó. Đó là một nguồn tài nguyên cực kỳ hữu ích cho sự khôn ngoan liên quan đến hiệu suất. Ví dụ:bạn đã hỏi về InnoDB so với MyISAM. Kết luận của họ:InnoDB có hiệu suất cao hơn trung bình ~ 30% so với MyISAM. Mặc dù cũng có một số trường hợp sử dụng trong đó MyISAM hoạt động tốt hơn InnoDB.

Các tác giả của blog đó cũng là đồng tác giả của "MySQL Hiệu suất Cao", cuốn sách được đề cập bởi @Andrew Barnett.

Nhận xét lại từ @ ʞɔıu:Làm thế nào để biết bạn bị ràng buộc I / O hay ràng buộc CPU hay giới hạn bộ nhớ là tùy thuộc vào nền tảng. Hệ điều hành có thể cung cấp các công cụ như ps, iostat, vmstat hoặc top. Hoặc bạn có thể phải sử dụng công cụ của bên thứ ba nếu hệ điều hành của bạn không cung cấp.

Về cơ bản, bất kỳ tài nguyên nào được chốt ở mức sử dụng / bão hòa 100% đều có thể là điểm nghẽn của bạn. Nếu tải CPU của bạn thấp nhưng tải I / O của bạn ở mức tối đa cho phần cứng của bạn, thì bạn bị ràng buộc I / O.

Tuy nhiên, đó chỉ là một điểm dữ liệu. Việc khắc phục cũng có thể phụ thuộc vào các yếu tố khác. Ví dụ:một truy vấn SQL phức tạp có thể đang thực hiện sắp xếp tệp và điều này khiến I / O bận rộn. Bạn nên ném phần cứng nhiều hơn / nhanh hơn vào nó hay bạn nên thiết kế lại truy vấn để tránh phân loại tệp?

Có quá nhiều yếu tố cần tóm tắt trong một bài đăng trên StackOverflow và thực tế là nhiều cuốn sách tồn tại về chủ đề này hỗ trợ điều này. Giữ cho cơ sở dữ liệu hoạt động hiệu quả và sử dụng tốt nhất các nguồn tài nguyên là công việc toàn thời gian đòi hỏi các kỹ năng chuyên môn và không ngừng học tập.

Jeff Atwood vừa viết một bài blog thú vị về cách tìm các nút thắt cổ chai trong hệ thống:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách dễ nhất để xác định xem người dùng có trực tuyến không? (PHP / MYSQL)

  2. Có thể tạo một cột trong MySQL với một biểu thức làm giá trị mặc định không?

  3. mysql Số cột không hợp lệ trong đầu vào CSV khi nhập tệp csv

  4. script để chuyển đổi tệp sql mysql dump thành định dạng có thể được nhập vào sqlite3 db

  5. PHP float / double được lưu trữ dưới dạng MySQL DECIMAL