2012-09-16 8 views
6

Tôi muốn sử dụng MySQL để lưu các biến phiên. Từ những gì tôi hiểu điều này có nghĩa là trên mỗi yêu cầu trang sẽ có một lần đọc và một ghi vào bảng.Công cụ lưu trữ MySQL tốt nhất để sử dụng cho việc lưu trữ phiên PHP

Công cụ lưu trữ MySQL nào phù hợp nhất cho tác vụ này? MyISAM, InnoDB, MariaDB (mà tôi không thấy trong PHPMyAdmin), Bộ nhớ, hay cái gì khác hoàn toàn?

Trả lời

8

"Tốt nhất" nghĩa là không có gì. Bạn cần thể hiện những ràng buộc của bạn: bạn có cần sự nhất quán không? Độ bền? Tính khả dụng cao? Hiệu suất? Một sự kết hợp của tất cả các thuộc tính này? Bạn có thể đủ khả năng để mất phiên của bạn? Chúng có thể phù hợp với trí nhớ không? Bạn có cần hỗ trợ truy cập đồng thời vào cùng một dữ liệu không?

Nếu không có nhiều ngữ cảnh hơn, tôi sẽ chọn InnoDB là công cụ lưu trữ cân bằng nhất. Nó cung cấp hiệu suất chính xác cho các ứng dụng OLTP, giao dịch ACID, độ tin cậy tốt và quản lý đồng thời hợp lý. Truy cập biến phiên có thể sẽ được thực hiện bằng cách sử dụng các khóa chính và thao tác này rất hiệu quả với InnoDB.

Bây giờ nếu hiệu suất thực sự là một hạn chế, tôi thà sử dụng công cụ NoSQL (tức là không phải MySQL). Để lưu trữ dữ liệu phiên, Redis thường hoạt động rất tốt và đủ dễ dàng để tích hợp và triển khai.

+0

Câu trả lời hay. –

1

Công cụ lưu trữ bộ nhớ có vẻ là lựa chọn tốt nhất. Hãy nhớ rằng điều này là tốt cho các phiên tạm thời.

http://dev.mysql.com/doc/refman/5.0/en/memory-storage-engine.html

+0

Sẽ không có vấn đề gì nếu tôi có bộ cân bằng tải khi động cơ không ghi dữ liệu vào đĩa và máy chủ không chia sẻ bộ nhớ? Ngoài ra, nếu máy chủ bị treo hoặc khởi động lại tôi sẽ mất tất cả dữ liệu của mình? – qwertymk

0

Tùy thuộc vào cách bạn đánh giá "tốt hơn":

MyISAM là phổ biến nhất (nhiều gói lưu trữ được chia sẻ chỉ cho phép bạn sử dụng MyISAM). cộng với nó là khá hạn chế trong khía cạnh kiểm soát mối quan hệ, vì vậy bạn thiết lập nó thực sự nhanh chóng và dễ dàng. nếu bạn muốn tính di động và triển khai nhanh trên nhiều kịch bản lưu trữ, MYISAM LÀ TỐT NHẤT. InnoDB cho phép bạn tạo ra các mối quan hệ và bảo vệ dữ liệu toàn vẹn bằng cách liên kết các khóa trong các bảng khác nhau, có nghĩa là nhiều công việc hơn nhưng thiết kế db chuyên nghiệp hơn rất nhiều. nhiều gói lưu trữ được chia sẻ không thực hiện InnoDB, do đó khi xuất cấu trúc bảng từ môi trường này sang môi trường khác, bạn có thể có thêm một số công việc cần làm. nếu bạn muốn quản lý và kiểm soát realationship, INNODB LÀ TỐT NHẤT. Theo như MyISAM (vì MyISAM không kiểm tra tính toàn vẹn của dữ liệu: "có một số người dùng 4 trong cơ sở dữ liệu người dùng khi tôi chèn một bản ghi mới trong user_car, hay không, ví dụ"). Nếu bạn bắt đầu với MyISAM, việc xuất sang cơ sở dữ liệu chính thức của InnoDB sẽ là một cơn ác mộng, ngay cả khi dữ liệu của bạn có tất cả các khóa, dữ liệu bảng phải được nhập đúng thứ tự (người dùng và ô tô, trước user_car).

MariaDB? không bao giờ, đơn giản vì ít người sử dụng nó hơn, do đó bạn sẽ có ít sự hỗ trợ hơn so với MyISAM và InnoDB.

Móc khóa dưới cùng: INNODB.

+3

Tại sao MariaDB không bao giờ? – qwertymk

+1

Nếu bạn mạnh mẽ ngăn cản Maria, nó có thể là giá trị nói lý do tại sao - nếu không câu đó không phải là rất hữu ích! Bạn có sửa bài viết của mình và mở rộng ở điểm đó một chút không? – halfer

+0

@quertymk và halfer, theo yêu cầu của bạn và chỉnh sửa. thanx! :) –