Kouhei Sutou
kou****@clear*****
2015年 7月 23日 (木) 23:17:09 JST
須藤です。 In <20150****@orega*****> "[groonga-dev,03380] Re: PGROONGAで障害発生" on Thu, 23 Jul 2015 09:22:54 +0900, 高見 直輝 <takam****@orega*****> wrote: >> 実は、確認してもらったバージョンでは「Shared Delete」(Cの >> API的にはFILE_SHARE_DELETEというフラグ)を指定するようにして >> います。それでも効いていないので、CreateFileMapping()(*)とい >> う機能を使った場合は「Shared Delete」を使えないんじゃないか >> と思っています。 >> >> (*) https://msdn.microsoft.com/en-us/library/windows/desktop/aa366537%28v=vs.85%29.aspx >> ファイルの内容をあたかもメモリー上にあるデータのように扱 >> うようにするための機能。Groongaはこの機能を使ってデータ >> ベースの内容を読み書きしている。 > > 少し調べてみたところ、CreateFileMappingで"PAGE_READWRITE | SEC_NOCACHE" > を指定することで対処可能という情報が有りました。 > http://www.osronline.com/showThread.cfm?link=64732 > ただ、CreateFileMappingのページでは、これを適用することで別の問題が発生 > する可能性があると記載されているので、解決策としては微妙なところです。 https://msdn.microsoft.com/en-us/library/windows/desktop/aa366539%28v=vs.85%29.aspx には Applications should not use this flag except when explicitly required for a device. と書いているので使わないほうがよさそうですね。。。 字面だけみるとキャッシュしなそう(変更を都度ディスクに書きだ しそう)なので、性能面でのデメリットもありそうな気がします。