Khi nói đến MySQL, không có sự so sánh giữa các công cụ lưu trữ ngoại trừ việc nó thuộc hai loại cơ bản:
MySQL có tính năng sử dụng một số công cụ lưu trữ
Đối với các công cụ lưu trữ được liệt kê, những công cụ duy nhất có tuân thủ ACID là InnoDB và NDB. Tại sao điều này quan trọng để đề cập đến? Hai lý do:
- Các công cụ lưu trữ khác đơn giản là không được hưởng lợi với sự hiện diện của nhiều lõi hơn, ngoài I / O đĩa cơ bản, sử dụng CPU và thông lượng tổng thể.
- Mã cho mỗi công cụ lưu trữ không giao dịch, cơ bản chỉ ra 14 hoạt động nội bộ bất kể công cụ lưu trữ, không được thiết kế để thúc đẩy truy cập của nhiều lõi.
InnoDB trong MySQL 5.5, Plugin InnoDB) và XtraDB của Percona Server có các tùy chọn bạn có thể đặt để truy cập nhiều lõi (Percona Server đã hoạt động lâu hơn). Trên thực tế, Percona tiêm khoảng 30.000 dòng mã đặc biệt để tăng cường hiệu năng của InnoDB với mỗi bản phát hành GA mới của mã nguồn MySQL. Chúng ta có thể chắc chắn rằng Oracle đã bao gồm các cải tiến của riêng mình từ bể tư duy của riêng họ để chạy trong InnoDB cho hoạt động đa lõi (kể từ MySQL 5.1,38).
Với nhu cầu thực hiện MVCC trên dữ liệu kết hợp với khóa hàng / trang, hiệu suất giao dịch giờ đây có thể được đo lường, đo lường và định cấu hình.
Nếu có một điều tôi đã học được về việc sử dụng nhiều lõi, đó là bạn phải điều chỉnh InnoDB một cách hiệu quả và không chỉ dựa vào InnoDB .
CẬP NHẬT 2011-09-20 08:03 EDT
Liên quan đến việc InnoDB được hưởng lợi từ tất cả các lõi, chúng ta cần giữ mọi thứ liên tục. Các lõi cũng phải có xu hướng các vấn đề khác (HĐH, Đĩa, Bộ nhớ, Ứng dụng, Giám sát, v.v.) trong Máy chủ Cơ sở dữ liệu. Đối với những người có ngân sách khiêm tốn, nhiều người có xu hướng có Máy chủ cơ sở dữ liệu cũng cung cấp NFS, giám sát từ Munin, hỗ trợ ứng dụng cho JBoss, PHP và danh sách sẽ tiếp tục. Nếu bạn muốn MySQL, cụ thể hơn là InnoDB, để sử dụng nhiều lõi hơn, Máy chủ cơ sở dữ liệu phải được dành riêng cho MySQL và HĐH / Đĩa / Bộ nhớ phải chỉ dành cho MySQL . Với quan điểm này, InnoDB sẽ tham gia nhiều lõi hơn mà không nghi ngờ gì .
Đối với Plugin InnoDB, nó được đề cập đơn giản là hiển thị các sáng kiến trước đó để có InnoDB tốt hơn trên một phần của MySQL (eh, Oracle. Xin lỗi, vẫn chưa thể thực hiện được). Các biến mới để triệu tập thêm hoạt động cốt lõi trở nên rõ ràng từ MySQL 5.1,38.
Ví dụ: innodb_read_io_threads và innodb_write_io_threads (cả kể từ MySQL 5.1,38) phân bổ số lượng chủ đề được chỉ định để đọc và ghi. Mặc định là 4 và tối đa là 64. Cài đặt mặc định và tối đa quá khác nhau (4 - 64) cho thấy InnoDB là đa luồng và chuyên sâu như bạn định cấu hình !!!
Việc giải quyết các nhu cầu của cộng đồng MySQL để truy cập nhiều lõi hơn với InnoDB được dẫn dắt bởi Percona. Do đó, MySQL bắt đầu làm theo. Tôi phải thừa nhận rằng Oracle (yuck) đã thực hiện những cải tiến cần thiết cho hoạt động cốt lõi hơn.