ETS是Erlang内置的内存数据库,可用于多进程共享数据,具有并发读写的性能,文章就这点展开探讨,重点说说ets并发读写两个参数的优缺点及适用场合。
比如新建一个person的ets表:
ets:new(person, [set, public, named_table, {write_concurrency, true}, {read_concurrency, true} ]).
说说ets并发读写的两个参数:write_concurrency / read_concurrency
write_concurrency(并发写)
可以提高多进程并发写ets的效率。通常来说,ets写数据时整张表是锁定的,其他进程不能进行读写直到前面的操作完成。并发写可以改变这个情况,同一个表中的不同记录可以被多个进程并发读写。有了这个参数,使得ets写记录时表读写锁变成了读锁,就是说,只要不是同一条记录,还可以继续往这个ets表写入数据,提高了并发写效率。但