shopex ecstone ,sdb_base_kvstore性能问题

看一些基本信息。

Table: sdb_base_kvstore
Create Table: CREATE TABLE `sdb_base_kvstore` (
`id` mediumint(8) unsigned NOT NULL auto_increment,
`prefix` varchar(255) NOT NULL,
`key` varchar(255) NOT NULL,
`value` longtext,
`dateline` int(10) unsigned default NULL,
`ttl` int(10) unsigned default '0',
PRIMARY KEY (`id`),
KEY `ind_prefix` (`prefix`),
KEY `ind_key` (`key`)
) ENGINE=MyISAM AUTO_INCREMENT=9417702 DEFAULT CHARSET=utf
8

id: 1
prefix: system
key: service_last_modified.base_application_dbtable.b
ase
value: s:32:"f765565d5b6a3bf8d1ccb18bd6058ab9";
dateline: 1328604155
ttl: 0

SELECT `prefix`, `key` FROM sdb_base_kvstore WHER
E ttl>0 AND (dateline+ttl)<1361339749 LIMIT 617900, 100

类似的,有很多条thread ,

问题主要是对sdb_base_kvstore 的查询很多,很多个thread,造成read lock。

分析,这个没有走索引,所以会比较慢一点,而且有很多并发,myisam的表级锁争用造成性能问题,但是会造成read lock ,这个不懂为什么,照理说select表锁不会阻塞其他的读操作。

解决方案是在ttl上建立索引,并且把表转成innodb的。主要是后者,innodb的行锁,大大提升并发性能。

问题可解决。

原文地址:https://www.cnblogs.com/gqdw/p/2919270.html