2009-07-16 33 views
7

Tôi có một lớp truy xuất bộ ghi của nó (nhiều hơn hoặc ít hơn 10 thành viên) từ cơ sở dữ liệu.php: phiên so với cơ sở dữ liệu

Câu hỏi của tôi là: có hiệu quả hơn khi tìm nạp chúng mỗi lần từ db (MySQL), chỉ để lại ID trong mảng của phiên hoặc lưu trữ chúng trực tiếp trong mảng của phiên không?

Và sự khác biệt về hiệu suất có tuyệt vời không? (được cung cấp cơ sở dữ liệu có 100.000 hàng)

Trả lời

10

Dù bạn đang lưu trữ ID trong phiên, phiên làm việc có ý nghĩa nhất. Thực hiện session_start() tải thông tin phiên của bạn để cho dù bạn đã tải 1 hoặc 10 mục sau đó phần lớn không liên quan (trừ khi chúng thực sự lớn nhưng đó sẽ là một vấn đề trong mọi trường hợp).

Vì vậy, hãy liên kết với phiên.

Nếu bạn thực sự lo ngại về tốc độ, hãy sử dụng bộ nhớ cache trong bộ nhớ như APC hoặc memcache. Lo lắng về tốc độ cho 10 mục từ hệ thống tập tin hoặc cơ sở dữ liệu là một sự phân tâm. Sự khác biệt sẽ tối thiểu đến mức không liên quan.

Lưu ý: ở trên giả định hai điều:

  1. Truy vấn được performant (lấy 10 dòng ra khỏi 100k nên doable trong dưới 0,1 giây); và
  2. Bạn đang làm một truy vấn không 10.
7

Phụ thuộc vào ý bạn là 'hiệu quả'. Hiệu quả thời gian của một người, không gian đĩa hiệu quả. Và rất khó để phán xét hai người chống lại nhau, trừ khi các yêu cầu của bạn đang ở giai đoạn cực đoan của quang phổ. Bạn có thể làm OK chỉ lật một đồng xu, đo hiệu suất theo thời gian, và điều chỉnh dựa trên bất kỳ vấn đề quan sát được.

Tối ưu hóa sớm là gốc của tất cả điều ác.

+0

chúc mừng báo giá;) dù sao, mối quan tâm của tôi là về tốc độ. –

+1

Vâng, cả hai đều đến từ đĩa, nhưng cả hai đều có khả năng được lưu trữ, một cơ sở dữ liệu, một bởi hệ điều hành (hoặc thậm chí là máy chủ web/mô-đun PHP, tùy thuộc vào cách cấu hình?) cách này, nó sẽ tối thiểu, có thể thay đổi hoàn toàn tùy thuộc vào những thay đổi phần cứng trong tương lai, và có lẽ không đáng để cố gắng nghĩ đến. Tôi muốn đề nghị bạn chỉ cần đi với những gì là tự nhiên: đối với một trang web nhỏ, tôi đoán đó có thể là cách tiếp cận phiên; cho mọi thứ khác, cơ sở dữ liệu. Bạn có thể muốn tránh cách tiếp cận phiên nếu bạn đang ở trên một máy chủ chia sẻ, tùy thuộc vào cấu hình máy chủ. –

2

Cho dù bạn có 100.000 hàng hoặc 10.000.000 hàng trong bảng của bạn là không thích hợp nếu bạn đã thiết lập các chỉ số của bạn đúng cách. Đã nói rằng phiên dựa trên tệp mặc định của PHP chắc chắn nhanh hơn việc truy xuất từ ​​cơ sở dữ liệu, nhưng bạn sẽ không nhận thấy sự khác biệt cho đến khi trang web của bạn được sử dụng rất nhiều, chẳng hạn như 5.000+ truy vấn mỗi giây.

Các vấn đề liên quan