2018-03-07 13:43 GMT+01:00 Arthur Zakirov <a.zaki...@postgrespro.ru>:
> On Wed, Mar 07, 2018 at 01:02:07PM +0100, Pavel Stehule wrote: > > > Understand. I'm not againts the mmap() approach, just I have lack of > > > understanding mmap() benefits... Current shared Ispell approach > requires > > > preprocessing after server restarting, and the main advantage of mmap() > > > here > > > is that mmap() doesn't require preprocessing after restarting. > > > > > > Speaking about the implementation. > > > > > > It seems that the most appropriate place to store preprocessed files is > > > 'pg_dynshmem' folder. File prefix could be 'ts_dict.', otherwise > > > dsm_cleanup_for_mmap() will remove them. > > > > > > I'm not sure about reusing dsm_impl_mmap() and dsm_impl_windows(). But > > > maybe it's worth to reuse them. > > > > > > > I don't think so serialization to file (mmap) has not too sense. But the > > shared dictionary should loaded every time, and should be released every > > time if it is possible.Maybe there can be some background worker, that > > holds dictionary in memory. > > Do you mean that a shared dictionary should be reloaded if its .affix > and .dict files was changed? IMHO we can store last modification > timestamp of them in a preprocessed file, and then we can rebuild the > dictionary if files was changed. > No, it is not necessary - just there should be commands (functions) for preload dictiory and unload dictionary. > > -- > Arthur Zakirov > Postgres Professional: http://www.postgrespro.com > Russian Postgres Company >