最近研究了一下dz的内存表,发现dz在高并发下内存表是一个瓶颈,很多锁等待都在这个表上。
内存表适合于一些事务过程中零时行生成的一些数据,将其存放或者销毁。内存引擎看起来很适合这样的工作
但是实际上不是这样,特别是在m-s这样的复制架构下。有时候会导致问题的出现,比如重启slave的时候,同步master的命令时候可能会找不到相关的记录而报错。那么我们应该怎么办呢?
1.用innodb替代memory引擎 innodb的并发并不比memory差,update的情况下反而更高。
2.使slave跳过memory heap表
3.重启slave的时候千万小心 按照一定的顺序来进行操作 首先dump出memory表,然后skip-error进入slave导入,然后replication。
4.可以使用skip-slave-error之类的跳过slave上的错误
以上是工作中的一些经验总结,dz论坛大并发的时候可以讲cdb_session引擎更换掉。不过记得优化innodb的buffer cache
文章评论