2005年ころ、PostgreSQL+QueryCacheという実験をやっていたことをふと思い出す。
今みてもソースが汚い。ソースよりも「インスパイヤライセンス」を書きたくて作った側面も否定できず。
とにかく、キャッシュ効果がほとんど得られなかったので、実装もアイディア(MySQLのパクリ)もどちらもダメだったことだけは確か。
今やるならどういう構成が正解なのかはわからない。なにかスマートな実装方法もあるのかもしれない。
厳密にquerycacheを実装すると、テーブルが更新されればそのテーブルデータのキャッシュをすべて廃棄しなければならない。だから基本、更新なしのテーブル対応くらいの割り切った使いかたをしないと、querycache自体がオーバーヘッドになってしまう。
OS含めて考えるとkernel page cacheの効果もあるわけで、OracleなんかがやっているqueryTreeのキャッシュでパース/リライト/プランニングをスキップする方式が良いのではないかと当時は思ったりした。