Lợi ích của khóa cấp bảng


7

Những lợi ích của việc khóa cấp bảng được sử dụng bởi công cụ lưu trữ MyISAM là gì? Khóa cấp hàng có rất nhiều lợi ích như cập nhật đồng thời và đọc không khóa bảng.

Chỉnh sửa xem xét rộng rãi rằng khóa cấp bảng ngăn chặn bế tắc. Nhưng làm thế nào để ngăn chặn các bế tắc với chi phí đồng thời là đáng giá?


Thảo luận này có thể có một số thông tin liên quan cho bạn.
Nick Chammas

Thảo luận này là về các đặc điểm của MyISAM vs InnoDB, không có gì về lợi ích của việc khóa cấp bảng.
Rick James

Câu trả lời:


5

MyISAM không có bế tắc, nhưng bế tắc theo một cách nào đó, là một cải tiến so với khóa cấp bảng.

Khi bạn đang cố gắng XÁC NHẬN / CẬP NHẬT / XÓA từ bảng bị khóa, bạn sẽ cần đợi cho đến khi có sẵn hoặc cho đến khi bạn nhận được thời gian chờ (theo mặc định là 28800 giây). Với việc bế tắc trên công cụ khóa cấp hàng, bạn chờ một chút nếu nó không miễn phí và nếu máy chủ phát hiện một loại "vòng lặp vô hạn" - trong đó 2 kết nối sẽ không từ bỏ một hàng - thì nó sẽ từ chối cả hai kết nối một cách nhanh chóng và bế tắc

Nếu bạn đang cố gắng giải quyết bế tắc, tôi sẽ đề nghị bạn xem xét những điều sau:

  • Liệu bế tắc xảy ra trên mã xấu trong một giao dịch? có thực sự cần thiết phải "giữ" một hàng để bạn hoàn thành tính toán của mình và cập nhật nó không?
  • Có một chỉ số cho điều kiện trong tuyên bố của bạn? nếu không, InnoDB thực sự có thể đánh dấu toàn bộ bảng là chờ được cập nhật.
  • Có thể là ổ cứng trên máy chủ không cam kết thay đổi InnoDB đủ nhanh? hoạt động điểm kiểm tra trên máy chủ có gây ra sự cố / gian hàng với InnoDB không?
  • Có phải vì khóa tự động tăng? Nếu vậy, có lẽ bạn nên xem xét tăng tự động tự do hơn - cài đặt http://dev.mysql.com/doc/refman/5.1/en/innodb-auto-increment-handling.html (cũng xem khóa khóa cấp hàng để giải quyết một số vấn đề gây ra bởi những thay đổi đó)

6

Vì mysql lên lịch các truy vấn để thực hiện theo cách này:

  • Viết yêu cầu (như CẬP NHẬT và XÓA) được ưu tiên hơn các yêu cầu đã đọc (CHỌN)
  • Máy chủ thực hiện ghi theo cách thức FIFO (theo thứ tự nhận được)

Những lợi ích là gì?

Bế tắc không bao giờ có thể xảy ra với MyISAM. Do đó, máy chủ MySQL có thể quản lý tất cả sự tranh chấp, rõ ràng (LOCK TABLE) hoặc implcit (Bất kỳ DML).

Miễn là bảng MyISAM không có bản ghi bị xóa hoặc cập nhật, việc chèn đồng thời có thể xảy ra một cách tự do mà không bị trừng phạt. Điều đó thực sự sẽ bao gồm các CHERTN trên một bảng có khóa đọc rõ ràng.

Đối với bất kỳ bảng nào có khoảng trống, việc chạy TỐI ƯU HÓA sẽ loại bỏ các khoảng trống đó và cho phép chèn đồng thời một lần nữa.

Để biết thêm thông tin, vui lòng đọc "Hướng dẫn nghiên cứu chứng chỉ MySQL 5.0" trang 408-412 Mục 29.2 .


Cách bế tắc này sẽ không bao giờ xảy ra nhưng lợi ích của nó sẽ đến đâu khi so sánh với những nhược điểm của nó như không có sự tương tranh. Và trên tải cao thông lượng chậm của cơ sở dữ liệu.
Rick James

2
@rickjames lợi ích của myisam không nằm ở cách nó quản lý các cập nhật. Đó là tốt nhất trong một tình huống chuyên sâu không viết.
Derek Downey

Thật không may, rất nhiều người sử dụng WordPress, Drupal và MovizableTypes CMS, mặc định luôn là MyISAM. Nếu bất cứ ai có một trang web buôn bán cao, họ phải tránh xa MyISAM. Nếu không, MyISAM nên đủ.
RolandoMySQLDBA

@DTest đúng, nhưng ngay cả trong hệ thống đọc chuyên sâu, lợi ích của nó so với khóa cấp hàng như thế nào?
Rick James

Ngay cả trong một hệ thống đọc hiểu, chỉ cần một câu lệnh XÓA hoặc CẬP NHẬT sẽ nhanh chóng vô hiệu hóa bất kỳ lợi ích nào MyISAM có.
RolandoMySQLDBA


3

Hai lợi ích.

a. Khóa bảng là một ví dụ về thuật toán brute-force để giải quyết vấn đề bế tắc. Brute force luôn hoạt động, cho các giá trị phù hợp của "công trình".

Ken Thompson, người đồng phát minh ra Unix, được cho là đã thốt ra epigram ngay khi nghi ngờ, hãy sử dụng vũ lực bạo lực. Có lẽ anh ta chỉ coi đây là một ha ha, nhưng sở thích ban đầu của hạt nhân Unix đối với các thuật toán đơn giản, mạnh mẽ và di động so với các thuật toán 'thông minh' dễ vỡ dường như là một yếu tố quan trọng trong sự thành công của HĐH đó. Giống như rất nhiều sự đánh đổi khác trong thiết kế phần mềm, sự lựa chọn giữa lực lượng vũ phu và sự thông minh tinh vi, phức tạp thường là một điều khó khăn đòi hỏi cả sự hiểu biết về kỹ thuật và phán đoán thẩm mỹ tinh tế.

b. Bạn chắc chắn sẽ đưa ra các quyết định khác nhau khi bạn có được cả sự hiểu biết về kỹ thuật và phán đoán thẩm mỹ. Điều này không ảnh hưởng đến hiệu lực của "a" ở trên.

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.