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. -- Arthur Zakirov Postgres Professional: http://www.postgrespro.com Russian Postgres Company