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

Sử dụng bộ nhớ tối đa MySQL

Việc sử dụng bộ nhớ tối đa của MySQL phụ thuộc rất nhiều vào phần cứng, cài đặt của bạn chính cơ sở dữ liệu.

Phần cứng

Phần cứng là phần hiển nhiên. Càng nhiều RAM càng vui, đĩa nhanh hơn ftw . Tuy nhiên, đừng tin những bức thư tin tức hàng tháng hoặc hàng tuần. MySQL không mở rộng quy mô tuyến tính - ngay cả trên phần cứng Oracle. Nó phức tạp hơn một chút.

Điểm mấu chốt là:không có quy tắc chung cho những gì được đề xuất cho của bạn Thiết lập MySQL. Tất cả phụ thuộc vào cách sử dụng hiện tại hoặc dự đoán.

Cài đặt và cơ sở dữ liệu

MySQL cung cấp vô số biến và thiết bị chuyển mạch để tối ưu hóa hành vi của nó. Nếu bạn gặp sự cố, bạn thực sự cần phải ngồi xuống và đọc hướng dẫn sử dụng (f'ing).

Đối với cơ sở dữ liệu - một vài ràng buộc quan trọng:

  • công cụ bảng (InnoDB , MyISAM , ...)
  • kích thước
  • chỉ số
  • sử dụng

Hầu hết các thủ thuật MySQL trên stackoverflow sẽ cho bạn biết khoảng 5-8 cái gọi là cài đặt quan trọng. Trước hết, không phải tất cả chúng đều quan trọng - ví dụ:phân bổ nhiều tài nguyên cho InnoDB và không sử dụng InnoDB không có ý nghĩa gì vì những tài nguyên đó bị lãng phí.

Hoặc - nhiều người đề xuất sử dụng max_connection biến - tốt, họ ít biết điều đó cũng ngụ ý rằng MySQL sẽ phân bổ nhiều tài nguyên hơn để phục vụ cho những max_connections đó - nếu cần. Giải pháp rõ ràng hơn có thể là đóng kết nối cơ sở dữ liệu trong DBAL của bạn hoặc giảm wait_timeout để giải phóng các chuỗi đó.

Nếu bạn nắm bắt được hướng đi của tôi - thực sự có rất nhiều thứ để đọc và học hỏi.

Động cơ

Công cụ bảng là một quyết định khá quan trọng, nhiều người quên mất những điều đó sớm và sau đó đột nhiên thấy mình đang chiến đấu với một MyISAM có kích thước 30 GB bảng khóa và chặn toàn bộ ứng dụng của chúng.

Tôi không có ý nói MyISAM tệ quá , nhưng InnoDB có thể được tinh chỉnh để phản hồi nhanh hoặc gần bằng MyISAM và cung cấp những thứ như khóa hàng vào UPDATE trong khi MyISAM khóa toàn bộ bảng khi nó được ghi vào.

Nếu bạn có thể tự do chạy MySQL trên cơ sở hạ tầng của riêng mình, bạn cũng có thể muốn xem máy chủ percona bởi vì trong số bao gồm rất nhiều đóng góp từ các công ty như Facebook và Google (họ biết nhanh), nó cũng bao gồm sự thay thế của chính Percona cho InnoDB , được gọi là XtraDB .

Xem ý chính của tôi về thiết lập percona-server (và -client) (trên Ubuntu): http://gist.github .com / 637669

Kích thước

Kích thước cơ sở dữ liệu là rất, rất quan trọng - tin hay không thì tùy, hầu hết mọi người trên Intarwebs chưa bao giờ xử lý một thiết lập MySQL lớn và dữ dội nhưng chúng thực sự tồn tại. Một số người sẽ troll và nói điều gì đó như, "Sử dụng PostgreSQL !!! 111", nhưng chúng ta hãy bỏ qua chúng ngay bây giờ.

Điểm mấu chốt là:đánh giá từ kích thước, quyết định về phần cứng sẽ được thực hiện. Bạn thực sự không thể làm cho cơ sở dữ liệu 80 GB chạy nhanh trên 1 GB RAM.

Chỉ số

Nó không phải:càng nhiều, càng vui. Chỉ các chỉ số cần thiết được đặt và việc sử dụng phải được kiểm tra bằng EXPLAIN . Thêm vào đó là EXPLAIN của MySQL thực sự có giới hạn, nhưng đó là một sự khởi đầu.

Các cấu hình được đề xuất

Giới thiệu về my-large.cnf này và my-medium.cnf - Tôi thậm chí không biết chúng được viết cho ai. Cuốn sách của riêng bạn.

Sơn lót điều chỉnh

Một khởi đầu tuyệt vời là điều chỉnh mồi . Đó là một tập lệnh bash (gợi ý:bạn sẽ cần linux) lấy đầu ra là SHOW VARIABLESSHOW STATUS và kết thúc nó thành một đề xuất hữu ích. Nếu máy chủ của bạn đã chạy một thời gian, đề xuất sẽ tốt hơn vì sẽ có dữ liệu để làm cơ sở cho chúng.

Tuy nhiên, mồi điều chỉnh không phải là một thứ nước sốt thần kỳ. Bạn vẫn nên đọc tất cả các biến mà nó đề xuất để thay đổi.

Đọc

Tôi thực sự muốn giới thiệu mysqlperformanceblog . Đó là một nguồn tài nguyên tuyệt vời cho tất cả các loại mẹo liên quan đến MySQL. Và không chỉ MySQL, họ còn biết rất nhiều về phần cứng phù hợp hoặc đề xuất thiết lập cho AWS, v.v. Những người này có nhiều năm kinh nghiệm.

Một tài nguyên tuyệt vời khác là hành tinh-mysql , tất nhiên.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tính tuổi dựa trên ngày sinh

  2. Tôi cần trang PHP của mình để hiển thị hình ảnh BLOB của tôi từ cơ sở dữ liệu mysql

  3. Cách chèn một mảng vào một câu lệnh MySQL Prepared duy nhất w / PHP và PDO

  4. Ví dụ ORD () - MySQL

  5. Cơ sở dữ liệu góc:Hướng dẫn mới bắt đầu để công cụ lưu trữ Mysql