• 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的行锁,大大提升并发性能。

    问题可解决。

  • 相关阅读:
    jQuery如何获取选中单选按钮radio的值
    java计算出字符串中所有的数字求和?
    java 多线程对List中的数据进行操作
    MongoDB
    CentOS网卡一致性命名
    linux之list_for_each和list_for_each_entry函数
    linux开机启动项
    linux学习参考网站
    linux内核态获取纳秒ns时间
    Linux内核kfifo
  • 原文地址:https://www.cnblogs.com/gqdw/p/2919270.html
Copyright © 2020-2023  润新知