2012-02-05 19 views
5

私はsqliteの機能を研究しており、デフォルトでは無効になっているSQLite Shared-Cache Modeを発見しました。PHP PDOを使用してsqliteで共有ページャキャッシュを有効にします

共有型のキャッシュである:

それはスレッドやプロセス間の単一のデータとスキーマキャッシュを共有するため、組み込みサーバ

での使用を目的と

。 PHP(およびPython)でsqliteを使用することに興味がありますので、私の質問は

です)1)PHPスクリプト内のすべてのPDO接続は、単一の分離接続と見なされるsqlite DBにありますか?

2)そうである場合、共有キャッシュモードを使用すると、同時実行性の高いシナリオでパフォーマンスが向上する可能性があります。共有キャッシュモードを有効にするには、このC関数を呼び出す必要があります。

int sqlite3_enable_shared_cache(int); 

この関数をPDOから呼び出す方法はありますか?

ほとんど不可能ですが、解決策があるようです。

よろしく、私はあなたのための答えを見つけるためにPHPのソースコードを検索したnetdesign

答えて

0

@ ファビオ・ブダ Web開発者/デザイナー。 ext/pdo_sqlite/のファイルがsqlite3_enable_shared_cacheという関数を呼び出すことはありません。これは実装されていないことを意味します。あなたは、PHPコードでSQLiteの共有キャッシュ機能を有効にするには、以下のトリックを行うことができます

+0

これは私が思ったことです... –

5

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

をそして、それは動作しますが、多少醜いしかし - 10Kのユーザーデータベース上のパフォーマンステストは少し(〜3%)性能を示しています分解。これはクエリ(結果)キャッシュではなく、生のテーブルデータのメモリキャッシュであるように見えます。だからこそ、並行性の高い非常に巨大なデータベースだけに役立つはずです。

+1

この回答はかなり素晴らしいですが、推奨される例ではPDOで定義された定数を使用する方法が示されていません – Sasho

関連する問題