首页 / 大数据 / MySQL对大数据集的低效查询
MySQL对大数据集的低效查询
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL对大数据集的低效查询,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2004字,纯文字阅读大概需要3分钟。
内容图文
![MySQL对大数据集的低效查询](/upload/InfoBanner/zyjiaocheng/907/27bb749dc9134204a652ef7ee5142b37.jpg)
我们有一个类似于这样的MySQL表(删除了无关紧要的列):
CREATE TABLE `my_data` (
`auto_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`created_ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_ts` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`data_txt` varchar(256) CHARACTER SET utf8 NOT NULL,
`issued_ts` timestamp NULL DEFAULT NULL,
`account_id` int(11) NOT NULL,
PRIMARY KEY (`auto_id`),
KEY `account_issued_idx` (`account_id`,`issued_ts`),
KEY `account_issued_created_idx` (`account_id`,`issued_ts`,`created_ts`),
KEY `account_created_idx` (`account_id`,`created_ts`),
KEY `issued_idx` (`issued_ts`)
) ENGINE=InnoDB;
表中有大约900M行,其中一个account_id占这些行的65%以上.我被要求在日期范围内为create_ts和issued_ts编写查询,这些查询依赖于account_id,而account_id似乎对自动增量键具有1:1的功能依赖性.
典型的查询看起来像这样:
SELECT *
FROM my_data
WHERE account_id = 1 AND
created_ts > TIMESTAMP('2012-01-01') AND
created_ts <= TIMESTAMP('2012-01-21')
ORDER BY created_ts DESC LIMIT 100;
对查询的EXPLAIN显示:
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: my_data
type: range
possible_keys: account_issued_idx, account_issued_created_idx, account_created_idx,
key: account_issued_created_idx
key_len: 8
ref: NULL
rows: 365314721
Extra: Using where
问题是查询花了太长时间并最终被杀死.我让它运行了几次,它带来了数据库主机,因为操作系统(Linux)耗尽了交换空间.
我反复研究过这个问题,并尝试将查询分解为不相关的子查询,强制索引,使用显式的SELECT子句,并限制日期范围的窗口,但结果是相同的:性能不佳(也是对主人过于沉重(总是死亡).
我的问题是:
>是否可以制定查询以将数据分割为日期范围并对可实现的呼叫执行可接受的操作? (< 1s)
>为了获得我被要求获得的性能,是否存在我缺少或可能有所帮助的优化?
欢迎任何其他建议,提示或想法.
谢谢
解决方法:
似乎mysql对此查询使用了错误的索引,尝试强制另一个:
SELECT *
FROM my_data FORCE INDEX (`account_created_idx`)
WHERE account_id = 1 AND
created_ts > TIMESTAMP('2012-01-01') AND
created_ts <= TIMESTAMP('2012-01-21')
ORDER BY created_ts DESC LIMIT 100;
内容总结
以上是互联网集市为您收集整理的MySQL对大数据集的低效查询全部内容,希望文章能够帮你解决MySQL对大数据集的低效查询所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。