it-swarm-vi.tech

Hệ thống tập tin Linux tốt nhất cho MySQL (InnoDB) là gì?

Tôi đã cố gắng tìm kiếm điểm chuẩn về hiệu suất của các hệ thống tệp khác nhau với MySQL InnoDB nhưng không thể tìm thấy bất kỳ.

Khối lượng công việc cơ sở dữ liệu của tôi là OLTP dựa trên web điển hình, khoảng 90% đọc, 10% viết. IO ngẫu nhiên.

Trong số các hệ thống tập tin phổ biến như ext3, ext4, xfs, jfs, Reiserfs, Reiser4, v.v ... bạn nghĩ cái nào là tốt nhất cho MySQL?

48
Continuation

Bạn đánh giá bao nhiêu dữ liệu?

Nghiêm túc mà nói, mỗi hệ thống tập tin có sự đánh đổi riêng của nó. Trước khi tôi đi xa hơn, tôi là một fan hâm mộ lớn của cả XFS và Reiser, mặc dù tôi thường chạy Ext3. Vì vậy, không có sự thiên vị hệ thống tập tin thực sự tại nơi làm việc, chỉ cho bạn biết ...

Nếu hệ thống tập tin ít hơn một container cho bạn, thì hãy đi với bất cứ điều gì cung cấp cho bạn thời gian truy cập tốt nhất.

Nếu dữ liệu có giá trị đáng kể, bạn sẽ muốn tránh XFS. Tại sao? Bởi vì nếu nó không thể khôi phục một phần của tệp được ghi nhật ký nó sẽ loại bỏ các khối và tạo dữ liệu không thể phục hồi. Vấn đề này là đã sửa trong Linux Kernel 2.6.22 .

ReiserFS là một hệ thống tập tin tuyệt vời, với điều kiện nó không bao giờ gặp sự cố cứng . Khôi phục nhật ký hoạt động tốt, nhưng vì lý do nào đó bạn làm mất thông tin phân vùng của mình hoặc các khối cốt lõi của hệ thống tệp bị thổi bay, bạn có thể gặp khó khăn nếu có nhiều phân vùng ReiserFS trên đĩa - vì về cơ bản cơ chế khôi phục quét toàn bộ đĩa, từng khu vực, tìm kiếm những gì nó "nghĩ" là sự khởi đầu của hệ thống tập tin . Nếu bạn có ba phân vùng với ReiserFS nhưng chỉ có một phân vùng bị thổi bay, bạn có thể tưởng tượng sự hỗn loạn này sẽ gây ra khi quá trình khôi phục kết hợp một mớ hỗn độn Frankenstein từ hai hệ thống khác ...

Ext3 là "chậm", theo cách "Tôi có 32.000 tệp và phải mất thời gian để tìm thấy tất cả chúng đang chạy ls". Nếu bạn sẽ có hàng ngàn bàn nhỏ tạm thời ở khắp mọi nơi, bạn sẽ có một chút đau buồn. Các phiên bản mới hơn hiện nay bao gồm một tùy chọn chỉ mục giúp giảm đáng kể việc duyệt qua thư mục nhưng nó vẫn có thể gây đau đớn.

Tôi chưa bao giờ sử dụng JFS. Tôi chỉ có thể nhận xét rằng mọi đánh giá về nó tôi từng đọc là một thứ gì đó dọc theo dòng chữ "rắn, nhưng không phải là đứa trẻ nhanh nhất trong khối". Nó có thể đáng để điều tra.

Đủ các nhược điểm, chúng ta hãy nhìn vào Ưu điểm:

XFS:

  • hét lên với các tập tin khổng lồ, thời gian phục hồi nhanh
  • tìm kiếm thư mục rất nhanh
  • Nguyên thủy để đóng băng và giải phóng hệ thống tập tin để bán phá giá

ReiserFS:

  • Truy cập tệp nhỏ tối ưu cao
  • Gói một số tệp nhỏ vào cùng một khối, bảo tồn không gian hệ thống tệp
  • phục hồi nhanh, đối thủ lần XFS phục hồi

Ext3:

  • Đã thử và đúng, dựa trên mã Ext2 được kiểm tra tốt
  • Rất nhiều công cụ xung quanh để làm việc với nó
  • Có thể được gắn lại dưới dạng Ext2 trong một nhúm để phục hồi
  • Có thể thu nhỏ cả và mở rộng (các hệ thống tệp khác chỉ có thể được mở rộng)
  • Các phiên bản mới nhất có thể được mở rộng "trực tiếp" (nếu bạn táo bạo)

Vì vậy, bạn thấy, mỗi có quirks riêng của mình. Câu hỏi là, đó là ít kỳ quặc nhất đối với bạn?

44
Avery Payne

Cũng có thể đáng lưu ý rằng bạn có thể chạy InnoDB mà không cần hệ thống tệp và cải thiện hiệu suất mà không cần hệ thống tệp. Tôi không chắc chắn tôi muốn giới thiệu nó, nhưng tôi đã sử dụng nó trước đây mà không gặp vấn đề gì.

Thiết bị thô InnoDB

Ngoài ra, nếu bạn đang chạy ở mức 90% đọc và 10% viết, trừ khi bạn cần khả năng giao dịch của InnoDB, bạn có thể xem xét chuyển sang MyISAM để có hiệu suất đọc tốt hơn.

13
Xorlev

Các câu trả lời ở đây không được chấp nhận nghiêm túc và cần cập nhật vì điều này sẽ xuất hiện trong kết quả của google.

Đối với môi trường produciton, XFS. Mỗi lần. XFS được ghi nhật ký và không chặn. Đảm bảo rằng bạn có các biến sau cho cơ sở dữ liệu MySQL hiện đại (2011/2012) bằng InnoDB trong sản xuất:

innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 1 # an ACID requirement
sync_binlog = 1 # more ACID
innodb_flush_method = O_DIRECT

Không sử dụng EXT3 hoặc thậm chí EXT4. Một ngày BTRFS sẽ đến đó.

EXT3, và có lẽ EXT4, khóa ở mức inode, không thông minh!

Nguồn: - www.mysqlperformanceblog.com - http://dev.mysql.com/doc/i INTERNals/en/index.html - Tìm hiểu về Nội bộ MySQL của Sasha Pachev - https://www.facebook.com/note.php?note_id=101502109016109 - http://oss.sgi.com/projects/xfs/training/ - Một số bộ swing, dùng thử và lỗi.

EDIT: Một bản cập nhật. EXT4 dường như đang hoạt động khá tốt vào giữa năm 2013! BTRFS vẫn không phải là một lựa chọn tốt. Và RHEL cũng có thể biến XFS thành hệ thống tệp mặc định mới. Một lần nữa, KHÔNG sử dụng EXT3.

11
Mathnode

Phiên bản ngắn nhất là khuyến nghị gần nhất mà tôi thấy MySQL đưa ra trên các hệ thống tập tin là XFS, tuy nhiên ext3 cũng ổn, ext4 hứa hẹn sẽ là một cải tiến tốt, nhưng nó vẫn chưa ổn định, mặc dù nó phải trước cuối năm.

Nếu bạn đang chạy các hệ thống tập tin cụm CXFS, OCFS2 và GFS đều ổn.

Tôi mạnh mẽ cảnh báo chống lại bất kỳ dẫn xuất Reiser nào và JFS mặc dù một khi Nice đã bị XFS và ext4 đánh bại, cả hai đều được triển khai rộng rãi hơn.

9
LapTop006

Nó không có khả năng tạo ra nhiều sự khác biệt. Đi với bất cứ điều gì phân phối của bạn sử dụng làm mặc định của nó, miễn là nó đủ.

Dành nỗ lực của bạn để điều chỉnh những thứ khác - nhận đủ ram - nhận bộ điều khiển đột kích không hút - và sửa lỗi sử dụng cơ sở dữ liệu (ứng dụng) khập khiễng của ứng dụng (NB: đây là thủ phạm chính trong hầu hết các trường hợp chưa có đã được thực hiện).

Tuy nhiên, hãy xem xét một cách cẩn thận, hệ thống tập tin bạn đặt mysmp tmpdir của bạn vào; điều này sẽ ảnh hưởng đến hiệu suất, đặc biệt là các truy vấn thực hiện các tập tin dựa trên đĩa (xem EXPLAIN để biết thêm chi tiết).

Tôi nghĩ rằng một hệ thống tệp hỗ trợ phân bổ trễ thực sự tiện dụng ở đây, vì bạn có thể tránh IO hoàn toàn cho các tệp có thời gian sử dụng ngắn khi có đủ ram để giữ chúng trong bộ đệm. Ví dụ: XFS, không bận tâm đến việc viết các tập tin bị xóa và đóng trước khi chúng được phân bổ.

Tất nhiên, việc đặt một tmpdir trên một tmpfs là hấp dẫn từ góc độ hiệu suất, nhưng dẫn đến nguy cơ cạn kiệt dung lượng và có các truy vấn sẽ thành công (mặc dù sử dụng các tệp tạm thời của đĩa).

6
MarkR

Tôi không tìm thấy bất kỳ bài viết nào gần đây với "vòng" chuẩn trên MySQL chạy trên các hệ thống tệp khác nhau. Với khối lượng công việc mà bạn mô tả, tôi nghi ngờ rằng sự phân mảnh ở cấp độ tệp sẽ là một vấn đề. Nếu không có điểm chuẩn chính thức, tôi không thể nói bất cứ điều gì bạn nên coi là có thẩm quyền, nhưng ruột của tôi nói rằng mọi hệ thống tập tin bạn đề cập ở trên sẽ thực hiện gần như trong cùng một sân bóng (tức là tất cả theo thứ tự độ lớn cho số hiệu suất) .

Cơ sở dữ liệu đang thực sự chạy chương trình, vì hệ thống tập tin chỉ quản lý các phạm vi lớn mà công cụ lưu trữ đang truy cập.

Tuy nhiên, sẽ rất thú vị khi thực hiện một vòng hiệu năng với tất cả các hệ thống tệp đó. (Tuy nhiên, tôi không có chút nhiệt tình nào với MySQL, vì vậy tôi sẽ không thực hiện nó. Các tiêu chuẩn Postgres, OTOH, có thể rất thú vị ...)

5
Evan Anderson

IMHO các FS đáng chú ý có sẵn cho linux là:

XFS (tốc độ đọc kém) được biết là nhẹ về tài nguyên hệ thống và nhanh với các tệp lớn nhưng kém để xử lý nhiều tệp nhỏ.

ReiserFS (tốc độ ghi kém) không tốt về tài nguyên hệ thống nhưng hoạt động rất tốt với nhiều tệp nhỏ.

EXT3 rơi vào giữa, hoạt động có thể chấp nhận được trên tất cả các trường (lý do tại sao nó được coi là mặc định linux FS).

Bản thân tôi chưa sử dụng EXT4 chứ không phải ReiserFS4 nhưng tôi đã xem xét một số điểm chuẩn và ReiserFS dường như có hiệu suất tốt nhất khi nói về tốc độ đọc, điều mà bạn nói là quan trọng nhất đối với bạn.

Hãy xem cái này: ReserFS4 X Ext4 X Ext

Tôi muốn giới thiệu Ext3 vì tính ổn định, bảo mật và trưởng thành của nó, nhưng nếu tốc độ đọc là điều quan trọng nhất với bạn, bạn nên xem xét ReiserFS.

Hãy nhớ rằng bạn cũng nên xem xét việc sử dụng CPU, tính ổn định, bảo mật như vậy trước khi chọn một FS.

Và tất nhiên, làm một thí điểm, thử nghiệm và điểm chuẩn trên môi trường cụ thể của bạn luôn là cách tốt nhất để nói điều gì sẽ làm việc tốt nhất cho bạn.

Tái bút: Tôi đã đăng nhiều điểm chuẩn hơn nhưng tôi không thể đăng nhiều hơn một liên kết.

3
OldJim