【问题标题】:partitioning big table with equal amount of lookup in primary key and a secondary key在主键和辅助键中使用相同数量的查找对大表进行分区
【发布时间】:2015-08-10 08:03:43
【问题描述】:

我有一个包含大约 15.000.000 个条目的表,它变得越来越大,并且由于它的大小,我开始出现“锁定等待超时”。所以我正在研究分区。

假设该表是一个学生/学校数据库。 school_id 和 student_id 的查找次数相等,student_id 是主键。

什么 mysql 分区是最好的选择?如果我只用键做,那么每当我搜索 school_id 时,我都会有例如 10 个表要查找?

【问题讨论】:

    标签: mysql partitioning


    【解决方案1】:

    不,PARTITIONing 本质上不会提供任何性能提升。

    MySQL 很少在查询中使用多个索引。 “复合”索引通常是有益的。

    让我们看看

    SHOW CREATE TABLE
    The queries that are getting timeouts.
    

    【讨论】:

    • 嘿。该表已尽可能优化。 (我们的服务器每秒收到 7000 个请求,所以任何不使用最佳索引的东西都会让它全部崩溃)。不过,上次我检查时该表的大小约为 10gb,这对 Linux 中的文件大小(每个文件一个表中的 innodb)做了一些奇怪的事情。 :)
    • “文件大小有点奇怪”?告诉我们SHOW TABLE STATUS
    • 播放器引擎:InnoDB 版本:10 row_format:紧凑行:14720530 平均行长度:194 数据长度:2865774592 最大数据长度:0 索引长度:1275691008 数据免费:368050176 自动增量:191931364 创建时间: 2014-04-05 05:24:55 更新:NULL 检查:NULL 排序规则:utf8_unicode_ci 校验和:NULL
    • .ibd 文件大约是 4.4GB 吗?你在做很多DELETEs(或REPLACEs)——我看到(1)很多Data_free,Auto_increment比Rows大很多?
    • 要解决您的任何其他问题,我真的需要查看SHOW CREATE TABLE 和查询。
    猜你喜欢
    • 2015-12-22
    • 2011-04-27
    • 1970-01-01
    • 2015-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多