Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Biến phiên:Bao nhiêu dữ liệu là quá nhiều?

Thứ nhất, các phiên PHP không được lưu trữ trong bộ nhớ theo mặc định , chúng được lưu trữ trên đĩa, vì vậy mọi khối / phiên bạn ghi vào sẽ chiếm dung lượng đĩa chứ không phải bộ nhớ (cho đến khi bạn sử dụng PHP để đọc dữ liệu phiên).

Có, bạn có khả năng trở nên hiệu quả hơn, nhưng không phải nếu bạn muốn mở rộng quy mô và đây là lý do tại sao:


Lưu trữ dữ liệu trong các phiên

Hoàn toàn có thể chấp nhận được để lưu trữ một số dữ liệu trong các phiên. Về mặt lý thuyết, không có giới hạn (mặc dù tôi chưa bao giờ cố gắng phá vỡ nó hoặc thậm chí đẩy nó, chỉ cần chuyển sang một giải pháp hiệu quả hơn). Tuy nhiên, bạn sẽ bị giới hạn bởi dung lượng ổ đĩa và PHP memory_limit() .

Thông thường, dữ liệu được lưu trữ trong các phiên bao gồm những thứ như:

  • Tên người dùng
  • Hàm băm
  • Ngày đăng ký
  • Các biến khác (id / khóa nhóm người dùng, v.v.)
  • Tin nhắn flash
  • (KHÔNG phải mật khẩu!)

Tuy nhiên, có một sự đánh đổi. Nếu lưu lượng truy cập (và mức sử dụng) của bạn tăng lên và bạn đang lưu trữ nhiều dữ liệu trong $_SESSION , rất có thể bạn sẽ bắt đầu thấy các vấn đề, cả về việc sử dụng đĩa và bộ nhớ.

Tôi không nghĩ rằng có bất kỳ vấn đề nào với những gì bạn đang đề xuất, nhưng ngoài các mục bạn đã liệt kê và các ví dụ ở trên trùng lặp, bạn cần phải cẩn thận.

Nếu bạn muốn chia tỷ lệ (theo chiều ngang) và giữ lại các phiên dựa trên đĩa thì bạn có các tùy chọn ( phiên cố định hoặc mạng vùng lưu trữ là một cặp) vì đĩa trên một máy chủ không lưu trữ các phiên giống như đĩa trên máy chủ khác.


Vị trí dữ liệu phiên

Bạn có thể tìm thấy vị trí mà PHP lưu trữ dữ liệu phiên bằng cách gọi: session_save_path()

hoặc trên CLI:

php -r 'echo session_save_path(), "\n";'

Bạn chưa đề cập đến hệ điều hành của mình, nhưng các vị trí phổ biến cho các tệp phiên (trên các loại hệ điều hành khác nhau) là:

/tmp 
/var/lib/php5/
/var/lib/php/session
c:/wamp/tmp

Các phiên được lưu trữ trên đĩa thường có tên tệp giống như thế này bằng cách sử dụng ls -al :

-rw-------  1 www www      0 2013-07-09 20:12 sess_bdsdjedmvtas5njhr5530b8rq6

Cần lưu ý rằng thường có các quy trình thu gom rác để loại bỏ các phiên chết sau các khoảng thời gian cụ thể. Nó thay đổi tùy theo hệ điều hành, nhưng chúng thường xuất hiện với các cài đặt dựa trên LAMP khác nhau.


Các tùy chọn / phương pháp lưu trữ phiên khác

Trong cơ sở dữ liệu của bạn Dữ liệu phiên
thường được lưu trữ trong DB thay vì trên đĩa cục bộ và điều này hoạt động tốt cho cả các trang web vi mô, nhỏ và (tùy thuộc vào cách thực hiện) với mức lưu lượng truy cập hợp lý.

Giống như bất kỳ giải pháp nào khác, nó có tính năng chuyên nghiệp và chuyên nghiệp (như có thể cấm / đuổi người dùng bằng cách chạy truy vấn thay vì xóa tệp phiên khỏi /tmp )

Trong bộ nhớ Đối với các trang web lớn hơn, (lưu lượng truy cập cao hơn) và đặc biệt là ở những nơi có khối lượng người dùng đồng thời cao, bộ nhớ đọc / ghi nhanh hơn đối với các biến hoặc dữ liệu được truy cập rất thường xuyên thay vì thêm tải quá mức vào DB của bạn. Nó có thể và vẫn nên được ghi vào DB (Xem ghi vào bộ nhớ đệm ), nhưng cũng được lưu giữ trong bộ nhớ để truy cập hiệu quả.

Một kỹ thuật đặc biệt đáng chú ý là bộ nhớ đệm . Một ví dụ được sử dụng rộng rãi giải pháp mã nguồn mở tương thích với PHP là Memcached , có thể được sử dụng trên một máy chủ hoặc nhiều máy chủ [được phân phối]. Tôi đã thấy điều này được sử dụng bởi các công ty nhỏ cũng như lớn và bạn chỉ cần xem ai sử dụng nó / đóng góp ...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cú pháp CƠ SỞ DỮ LIỆU SQL DROP - Được DBMS liệt kê

  2. Chọn một hàng trong MySQL

  3. hiệu suất đếm mysql

  4. Cách nhanh nhất để tải dữ liệu số vào mảng python / pandas / numpy từ MySQL

  5. MySQL Làm thế nào để CHỌN dữ liệu từ bảng được ghi lại ngày hôm nay?