tokudb-进销存报表
情景 :进销存报表的数据晚上的计划任务没有跑完(以往是凌晨1-3就能跑完),白天业务期间数据库cpu出现性能瓶颈,定位是进销存报表高并发的insert&select
针对相应的insert和select语句,可以优化的方面:
数据库这边我们排查了,发现两个问题并给了两个优化建议
1.单条insert插入,改成批量插入,性能提升非常明显; //减少commit的次数,从而减少insert时间 2.单条wahouseid和skuid查询,改成批量查询) // 租户的数据量本身会很大,一旦where条件的笛卡尔乘积过大,就会导致IO吃不消,cpu也会飙升
根本原因:
1.表的数据量较大(超过2/3的表的数据量都超过100w)
2.数据表的数量:差不多650张分表
3.我们对该库的一半的数据做了engine=tokudb的修改
优劣体现:
tokudb引擎相比较于innnodb有比较好的压缩比,insert速度能有相应的提升,但是select查询会比较慢,需要修改一个参数
设置 loose_tokudb_buffer_pool_ratio 的比例,即 tokudb 占用 tokudb 和 innodb 共用缓存的比例(根据库中使用引擎的数据表的数量来比较)
分析总结:
tokudb虽然能节省不少的磁盘空间,但是后续若大批量的修改tokudb的引擎,需要修改该参数loose_tokudb_buffer_pool_ratio 并重启数据库。