由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 非常常见的面试题:数据太多,用MySQL查询太慢该怎么办?
相关主题
请问最热的nosql是哪个?周末了,大家谈谈用过的NOSQL吧
F家这个烂大街的system题哪位大侠仔细讲讲Amazon Palo alto offer 请教各位
【拒信】被Coursera拒了我的System Design总结
About the latency of reading from mysql binlog (转载)[转]腾讯云计算全球华人求贤 (转载)
考大家一道SQL面试题内推苹果itunes部门
关于MySQL和NoSQL的一道面试题问道Twitter面试题
又招人了,Software Engineer (转载)四个个软工职位内推
有两个offer: Linux后台和web,做哪个比较好?系统设计题怎么准备
相关话题的讨论汇总
话题: mysql话题: index话题: 查询话题: query话题: 数据
进入JobHunting版参与讨论
1 (共1页)
r*****l
发帖数: 41
1
1. 在已经加完index的列上查询速度仍然很慢,重新建立index?
2. 用NoSQL?
3. 加Redis Cache?
4. 用MySQL replicator,对多个slaves查询?
5. 用in-memory database?
到底该怎么回答?
r*****l
发帖数: 41
2
这些答案都是工作中自己摸索体会出来的,有没有更权威的答案?
y*********e
发帖数: 518
3

首先explain下query,看下execution plan。看index有没有被用到。没有被用到,为
什么,改写query。有用到还是慢,index是不是corrupt了,重建index。Query返回多
少数据?返回数据量大的话,nonclustered index performance很有影响的,考虑
clustered index。table要不
要做partition?要不要把mysal server partition(比如把数据partition成100份,
存到100个不同的mysql server上,然后query做成100个mapper这样提速?)
还有,服务器CPU是不是100%了,看一下。还有,具体慢在哪里,是在数据库查询上,
还是在业务逻辑层上?看日志。需要的话profile一下。是一个服务器慢,还是多个慢
?是突然间变慢?最近有没有做release,要不要rollback?等等。。

【在 r*****l 的大作中提到】
: 1. 在已经加完index的列上查询速度仍然很慢,重新建立index?
: 2. 用NoSQL?
: 3. 加Redis Cache?
: 4. 用MySQL replicator,对多个slaves查询?
: 5. 用in-memory database?
: 到底该怎么回答?

h******e
发帖数: 908
4
用limit

【在 r*****l 的大作中提到】
: 1. 在已经加完index的列上查询速度仍然很慢,重新建立index?
: 2. 用NoSQL?
: 3. 加Redis Cache?
: 4. 用MySQL replicator,对多个slaves查询?
: 5. 用in-memory database?
: 到底该怎么回答?

r*****l
发帖数: 41
5
我是说存储的数据太多,而不是取出来的数据太多。
比如我要对数据库内timestamp列任意时间区间内的条数进行检索,返回的结果只有一
个int而已:
SELECT count(*) FROM table_name WHERE timestamp >= '2010-02-01 10:08:01' AND
timestamp <= '2016-02-02 10:30:30'

【在 h******e 的大作中提到】
: 用limit
j**********r
发帖数: 3798
6
好歹要有数据量,什么样的查询,什么样的SLA才能回答呀。这哪有统一答案的。

【在 r*****l 的大作中提到】
: 1. 在已经加完index的列上查询速度仍然很慢,重新建立index?
: 2. 用NoSQL?
: 3. 加Redis Cache?
: 4. 用MySQL replicator,对多个slaves查询?
: 5. 用in-memory database?
: 到底该怎么回答?

j**********r
发帖数: 3798
7
对单一query优化有很多种办法,比如每年分一个数据库,维护一个全年的count。数据
量直接下一个数量级。

AND

【在 r*****l 的大作中提到】
: 我是说存储的数据太多,而不是取出来的数据太多。
: 比如我要对数据库内timestamp列任意时间区间内的条数进行检索,返回的结果只有一
: 个int而已:
: SELECT count(*) FROM table_name WHERE timestamp >= '2010-02-01 10:08:01' AND
: timestamp <= '2016-02-02 10:30:30'

w*****g
发帖数: 1415
8
1. 最先分析query,看看query有没有优化的空间,或则简历index
2. 预先计算某些query的结果,然后存起来。比如学生的GPA,实时算起来很费时。我
们就建立一些trigger,每次某些数据库表有变动就自动计算并保存结果到GPA表。
3. 静态化,最常见的是新闻系统和文章管理系统。每次更新新闻/文章的时候,产生一
个文本文件,在file system里面存储。用户读取的时候从文件系统读,不经过数据库
,或者只有小部分数据经过数据库。
4. mysql replica,费时的查询可以交给只读的Mysql
5. memcached/redis
6. 升级服务器硬件(很多时候这个方法最省钱省时间)
u***n
发帖数: 21026
9
换数据库,dynamodb
s*****r
发帖数: 43070
10
常见的办法就是sharding,把大量数据分散存储
如果query需要join的,比较麻烦。一小一大,可以用hash join
大数据计算的主要目的其实就是join table
1 (共1页)
进入JobHunting版参与讨论
相关主题
系统设计题怎么准备考大家一道SQL面试题
如何自学nosql关于MySQL和NoSQL的一道面试题
脸家设计题,设计游戏排名系统又招人了,Software Engineer (转载)
大牛们看过来:system design讨论有两个offer: Linux后台和web,做哪个比较好?
请问最热的nosql是哪个?周末了,大家谈谈用过的NOSQL吧
F家这个烂大街的system题哪位大侠仔细讲讲Amazon Palo alto offer 请教各位
【拒信】被Coursera拒了我的System Design总结
About the latency of reading from mysql binlog (转载)[转]腾讯云计算全球华人求贤 (转载)
相关话题的讨论汇总
话题: mysql话题: index话题: 查询话题: query话题: 数据