首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择180条记录花了2秒

选择180条记录花了2秒
EN

Database Administration用户
提问于 2017-11-24 04:50:59
回答 1查看 63关注 0票数 0

我的桌子很简单:

CREATE TABLE `od_form_items` ( `id` int(11) NOT NULL AUTO_INCREMENT, `formid` int(11) DEFAULT NULL, `items` mediumtext, `template` mediumtext, `draftid` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=420 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT

而且它只包含180行:

mysql> select count(*) from od_form_items; +----------+ | count(*) | +----------+ | 180 | +----------+ 1 row in set (0.00 sec)

最长的字符串只是26314字节:

mysql> select length(items) as a from qiban.od_form_items order by a desc limit 1; +-------+ | a | +-------+ | 26314 | +-------+ 1 rows in set (0.01 sec) mysql> select length(template) as a from qiban.od_form_items order by a desc limit 1; +------+ | a | +------+ | 6556 | +------+ 1 rows in set (0.01 sec)

但是在mysql slow_log中,选择所有记录占用了2秒:

mysql> select start_time, query_time, sql_text from mysql.slow_log order by start_time desc limit 10; +---------------------+------------+--------------------------------------------+ | start_time | query_time | sql_text | +---------------------+------------+--------------------------------------------+ | 2017-11-24 10:34:40 | 00:00:02 | SELECT * FROM `od_form_items` +---------------------+------------+--------------------------------------------+ 1 rows in set (0.01 sec)

我应该如何优化它?我应该检查哪些mysql参数?谢谢!

EN

回答 1

Database Administration用户

回答已采纳

发布于 2017-11-24 20:13:33

在一个普通的旋转驱动器上,你可以得到大约100个IOPs。如果所有的180行都需要离开行以获得items,而template则不需要任何行,那么就需要180 +混合才能得到SELECT * 180次。那大约是2秒。

SSD驱动器会更快。

在客户机中,压缩这两列,然后将它们存储在BLOB中,就会缩小一些东西。这可能会导致IOP减少。

似乎填充memcached是一次性的动作,那么2秒就不是什么大事了?

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/191639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档