一道笔试题,大家来探讨一下

[复制链接]
查看11 | 回复9 | 2013-2-25 14:51:24 | 显示全部楼层 |阅读模式
关于mysql分表:如果数据量不大,远低于服务器内存,仍要分表,为什么?
为什么不进行分库?
为什么不用主从设计?

回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
我觉得有一种可能:表是myisam的,分表能减少锁。
回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
数据量不大是多大?也有可能是为了控制单表的记录数,追求性能而分表。
回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
本帖最后由 will009 于 2014-8-6 10:37 编辑
waityou81 发表于 2014-8-6 10:17
数据量不大是多大?也有可能是为了控制单表的记录数,追求性能而分表。

原题目没有具体数据

01.jpg (155.04 KB, 下载次数: 8)
下载附件
2014-8-6 10:37 上传

回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
原题提到了query cache,这应该是一个提示。query cache中的数据被修改后会失效。数据量小也做分表,可能是考虑到减少query cache失效。比如把大表分成很多小表,能让失效的query cache控制在一个比较小的范围。分库没啥意义。
个人倾向于禁用query cache,因为对于频繁更新的系统使用query cache反而会让性能下降。
回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
这个很好理解。
1. 不分表。假设表有100w行,全部在query cache中。更新一条记录会让这100w条记录的query cache全部失效
2. 分表。100w平均分到100个表中,更新一条记录只会让1w条记录的query cache失效
回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
这个很好理解。
1. 不分表。假设表有100w行,全部在query cache中。更新一条记录会让这100w条记录的query cache全部失效
2. 分表。100w平均分到100个表中,更新一条记录只会让1w条记录的query cache失效

点个赞!
回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
mark 学习
回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
waityou81 发表于 2014-8-6 10:59
这个很好理解。
1. 不分表。假设表有100w行,全部在query cache中。更新一条记录会让这100w条记录的query...

一语中的!mark
回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
waityou81 发表于 2014-8-6 10:59
这个很好理解。
1. 不分表。假设表有100w行,全部在query cache中。更新一条记录会让这100w条记录的query...

赞!(凑足5个字)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行