Lợi ích của Barracuda và nén


12

Tôi đã đọc về các định dạng tệp của MySQL Antelope và Barracuda một thời gian trước đây và tôi tự hỏi liệu tôi có thể có lợi khi có Barracuda và Nén không.

Máy chủ của tôi hiện đang sử dụng Antelope, vì nó là mặc định của MySQL.
Tôi đã nhiều lần gặp vấn đề với bộ nhớ do cơ sở dữ liệu lớn mà tôi có. Cơ sở dữ liệu của tôi đang tăng lên mỗi ngày.

Có vẻ như Nén đang mang lại lợi ích cho một số người, như:
http://www.mysqlperformanceblog.com/2008/04/23/real-life-use-case-for-barracuda-innodb-file-format/

Tôi hiểu bộ nhớ và dung lượng ổ đĩa có thể thấp hơn, nhưng tôi không chắc liệu tôi có hiểu điều này không (trích từ bài viết):
"~ 5% tải CPU theo đầu (từ 80 - 100% chủ yếu chờ I / O)
0,01 giây thời gian tra cứu trung bình bằng khóa chính (từ 1-20 giây trước khi chuyển đổi) "

Tôi nghĩ hai điều này sẽ KHÔNG cải thiện, vì nếu dữ liệu bị nén, máy chủ phải giải nén để lấy lại dữ liệu gốc, vậy có nghĩa là việc sử dụng CPU sẽ tăng lên không?

Điều đó có lợi cho bạn trong việc đọc / viết các ứng dụng chuyên sâu? Bạn có đề nghị tôi đổi sang Barracuda và Nén không?

Bạn có biết về bất kỳ vấn đề nào của Barracuda không?
Có vẻ như câu trả lời của các câu hỏi sau chỉ ra một số vấn đề, nhưng kể từ năm 2011, tôi muốn nói rằng chúng đã được sửa chữa ngay bây giờ: /server/258022/mysql-innodb-how-to-switch -to-barracuda-định dạng

Câu trả lời:


14

Về "Động" , định dạng chỉ dành cho Barracuda không nén, rất ít thay đổi từ nhỏ gọn, chủ yếu là về cách các đốm màu (và bất kỳ trường rất động nào) được lưu trữ . Tôi chưa bao giờ có bất kỳ vấn đề nào với compact so với động, vì vậy tôi có thể đề xuất một cách an toàn cho tính năng động của Barracuda. Hãy nhớ rằng Barracuda cũng hỗ trợ các định dạng hàng dự phòng và nhỏ gọn cũ .

Bài báo mà bạn đang đề cập có lẽ đã quá cũ (5.1) và, như Peter Z., CEO của Percona, đã đề cập đến các bình luận có thể hơi sai lệch. Điều đó không có nghĩa là nén không thể là một lợi ích lớn tùy thuộc vào khối lượng công việc. Tuy nhiên, tôi khuyên bạn nên dùng thử trên các phiên bản> = 5.6, vì cả Facebook và Oracle đã thực hiện nhiều cải tiến về nó.

Như nhiều tài liệu tham khảo gần đây, tôi muốn giới thiệu cho bạn:

Đặc biệt, tôi thích các tài liệu của Facebook vì họ là bên thứ ba (không cần chương trình nghị sự) và họ có một trong những triển khai MySQL lớn nhất trên thế giới. Như bạn có thể thấy họ đã có những thiết lập rất thành công khi kết hợp công nghệ SSD với nén.

Nó sẽ có lợi cho bạn? Điều đó sẽ phụ thuộc vào khối lượng công việc, bộ công việc và thiết lập của bạn (IOPS, bộ nhớ) . Tùy thuộc vào việc bạn bị ràng buộc IO, bị ràng buộc CPU hay bị ràng buộc bộ nhớ, việc nén có thể ảnh hưởng tiêu cực trong một số trường hợp, bằng cách thêm CPU, yêu cầu bộ nhớ (cả trang nén và không nén được lưu trữ trên nhóm bộ đệm InnoDB) hoặc tạo ra quá nhiều lỗi nén, tăng cường độ trễ. Nó cũng phụ thuộc vào loại dữ liệu: nén có thể giúp ích rất nhiều cho các đốm văn bản lớn, nhưng nó có thể vô dụng với dữ liệu đã được nén.

Theo kinh nghiệm của tôi, trong thực tế, có những người mà nén là một chén thánh của hiệu suất và rất hài lòng với nó, nhưng trong các trường hợp khác, chúng tôi phải quay lại dữ liệu không nén khi không thu được dữ liệu. Mặc dù khối lượng công việc viết rất nặng có vẻ như là một môi trường tồi tệ để nén, nhưng trong trường hợp cụ thể của bạn, bạn không bị ràng buộc bởi cpu và bị ràng buộc bởi bộ nhớ, nhưng iops bị ràng buộc có thể không hữu ích.

Nói chung, rất khó để dự đoán kết quả, thông thường bạn nên thiết lập môi trường kiểm tra để đo điểm chuẩn và sau đó khám phá lý do tại sao bạn nhận được kết quả tốt hơn hoặc xấu hơn (và theo cách đó bạn có thể chơi với các kích thước khối khác nhau, v.v.). Barracuda hoàn toàn an toàn. Nén có thể hoặc không dành cho bạn. Và bạn luôn có thể thử nghiệm các phương pháp nén khác như nén các đốm màu phía máy khách (ví dụ: nếu bạn kết thúc bằng CPU) hoặc các công cụ của bên thứ 3 khác như RocksDB và TokuDB , trong đó nén là ưu tiên lớn, vì nó được tập trung trong hiệu suất cho các bộ dữ liệu lớn hơn InnoDB có thể xử lý.

Tóm lại: Những lý do chính để sử dụng Barracuda là xử lý BLOB, innodb_large_prefixtính tương thích (chỉ mục lớn) và nén. Dynamic, trên MySQL 8.0 hiện là định dạng tệp mặc định.


1
Đây là một câu trả lời thực sự TUYỆT VỜI và rõ ràng! Nó làm cho tất cả các ý nghĩa và chính xác là loại câu trả lời tôi mong muốn. Bạn đang đề cập đến MySQL 5.6 (đó là những gì tôi đã nâng cấp gần đây) và coi Facebook là một ví dụ, như tôi muốn, vì họ thường phải vượt qua các thách thức trước mọi người khác. Thật không may, sẽ không dễ dàng kiểm tra điều này trước tiên, vì môi trường thử nghiệm sẽ không có cùng tải CPU / IO / RAM như sản xuất, nhưng thực sự tôi sẽ phải thử! Cảm ơn vi đa danh thơi gian cho tôi.
Nuno

Vì định dạng hàng có thể được chọn ở cấp bảng, điều đó có thể giúp bạn linh hoạt để thử nghiệm trên sản xuất (sau khi thử nghiệm đúng trên một máy riêng biệt). Cách tiếp cận này, tuy nhiên, sẽ có khả năng làm cho việc gỡ lỗi và điểm chuẩn trở nên khó khăn hơn.
jynus

Vâng, tôi có thể thử chuyển đổi một vài bảng trước tiên (có thể là những bảng không quá lớn / được sử dụng). Tuy nhiên, đối với những người lớn, điều đó sẽ đòi hỏi một vài thời gian chết, thay vì chỉ 1 thời gian chết mà tôi sẽ chuyển đổi tất cả chúng cùng một lúc. Tôi sẽ phải xem cách tiếp cận tốt nhất. Tôi không hiểu, tuy nhiên, tại sao nó làm cho việc gỡ lỗi trở nên khó khăn hơn. Chính xác thì bạn có ý gì ở đây? Cảm ơn rât nhiều.
Nuno

1
Bạn có các công cụ như pt-online-giản đồ thay đổi percona.com/doc/percona-toolkit/2.2/ đá để tạo lại các bảng theo kiểu trực tuyến. Tôi vừa đề cập rằng việc trộn chỉ một số bảng có thể gây khó khăn hơn trong việc đo lường thay đổi cpu / bộ nhớ / iops do thay đổi động cơ và phân biệt chúng với thay đổi tải thông thường hoặc do thay đổi bộ đệm khi tạo lại nó. Nó cũng khó nhìn thấy trên một máy khác với phần cứng khác nhau, vì vậy chỉ cần may mắn!
jynus

Trên ZFS, nó không hoàn toàn không tốt khi sử dụng LZ4 trên hệ thống tệp.
Denis Denisov
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.