2012-02-05 27 views
5

Tôi đang nghiên cứu các tính năng sqlite và tôi đã phát hiện ra SQLite Shared-Cache Mode bị tắt theo mặc định.Bật Bộ đệm ẩn được chia sẻ trong sqlite bằng cách sử dụng PHP PDO

Shared-Cache là:

kế để sử dụng trong các máy chủ nhúng

vì nó chia sẻ một bộ nhớ cache dữ liệu duy nhất và giản đồ giữa các chủ đề hoặc quy trình. Tôi quan tâm đến việc sử dụng sqlite (với shared-cache) trong PHP (và Python) để các câu hỏi của tôi là:

1) là mọi kết nối PDO trong một kịch bản PHP tới một sqlite DB được coi là một kết nối riêng lẻ?

2) nếu có, sử dụng Chế độ chia sẻ bộ nhớ cache có thể cải thiện hiệu suất trong trường hợp đồng thời cao; để kích hoạt Chế độ chia sẻ bộ nhớ cache, người dùng phải gọi hàm C này:

int sqlite3_enable_shared_cache(int); 

cách gọi hàm đó thông qua PDO?

Dường như gần như không thể nhưng có thể có giải pháp.

Best Regards, Fabio Buda Web Developer/Designer @netdesign

Trả lời

0

Tôi đã tìm kiếm thông qua các mã nguồn PHP để tìm câu trả lời cho bạn. Không có tệp nào trong ext/pdo_sqlite/ bao giờ gọi hàm sqlite3_enable_shared_cache, điều này có nghĩa là không được triển khai.

+0

đó là những gì tôi nghĩ ... –

5

Bạn có thể làm các trick sau để kích hoạt SQLite chia sẻ tính năng bộ nhớ cache trong mã PHP:

define('SQLITE3_OPEN_SHAREDCACHE' , 0x00020000); 
$sqlite = new SQLite3('sqlite.db3' , SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE |  SQLITE3_OPEN_SHAREDCACHE); 

Và nó hoạt động, mặc dù hơi xấu xí - kiểm tra hiệu suất trên 10k người sử dụng cơ sở dữ liệu cho thấy một hiệu suất nhỏ (~ 3%) suy thoái. Có vẻ như đây không phải là bộ nhớ cache (kết quả) truy vấn, mà là bộ nhớ cache của dữ liệu bảng thô. Đó là lý do tại sao nó chỉ được hưởng lợi trên cơ sở dữ liệu thực sự khổng lồ với mức độ đồng thời cao.

+1

Câu trả lời này là khá tuyệt vời, tuy nhiên ví dụ được đề nghị không hiển thị cách sử dụng hằng số được xác định với PDO – Sasho

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