ORMのSQLキャッシュについて

561 views
Skip to first unread message

toru1231

unread,
Oct 8, 2014, 7:42:05 AM10/8/14
to fuelp...@googlegroups.com
こんにちは、いつもお世話になります。

さて、今回はDBのキャッシュについて質問させてください。

DBクラスのSELECTクエリービルダーを使った場合は cached() メソッドで
SQLの結果をキャッシュすることができるのはドキュメントで確認いたしました。

それとは別で ORM パッケージを使っている場合の、 find() や get() の結果を
キャッシュする方法はありますでしょうか?
ドキュメントには from_cache() というので、ORMオブジェクトのキャッシュが
できるというような表記を見つけることができ、試してみたのですが profile で表示される
クエリ数は変化がありませんでした。
from_cache() はSQLの結果をキャッシュするというわけではないのでしょうか?

ORMパッケージでもSQLの結果をキャッシュする方法をご存じの方がおられましたら、
ご教示いただければと思います。


とおる
toru...@gmail.com
http://code.ttsoft.jp/
https://github.com/torut

Message has been deleted

sji.tech...@gmail.com

unread,
Mar 11, 2015, 10:09:10 AM3/11/15
to fuelp...@googlegroups.com
もう5ヶ月も前のことなので既に解決されてるとは思うのですが、
他の方が同じ情報を探すときの助けになるかもしれないので、
ここに返信として書かせていただきます。

Ormはデフォルトでオブジェクトキャッシュが有効ですが、
このキャッシュでSQLクエリをバイパスできるのは
Ormのfind($primary_key)を使う場合のみです。

find('first', $condition)とかquery()を使う場合にも
このキャッシュは別の形で使われるのですが、
SQLクエリはバイパスされません。
結果キャッシュが必要なら自前でやる必要があります。

たまにこのfind($primary_key)で使われるキャッシュが悪さして
無効な値を拾ってくる場合があるので、
そういう時にfrom_cache(false)が回避策として使われます。
デフォルトはfrom_cache(true)な状態です。

これについてブログ記事を書いたところなので、
詳しい方からのツッコミをお待ちしております。


2014年10月8日水曜日 20時42分05秒 UTC+9 Toru Tamura:
Reply all
Reply to author
Forward
0 new messages