对单表数据达到 10GB/10000 条的数据, 用 MySQL 如何存储, 查询速度更快?

2020-07-09 14:25:27 +08:00
 RickyC

大家能否给讲解一下, 需要用到哪些特别的技术?

和一般的小型数据的增删改查有什么不同?

谢谢

3809 次点击
所在节点    MySQL
25 条回复
saulshao
2020-07-09 14:32:46 +08:00
10GB/10000 = 1MB/条,这就需要你详细描述一下到底有个什么样的字段它特别大了。
再就是你需要使用什么样的查询条件?获取什么样的结果集?
hyq
2020-07-09 14:34:04 +08:00
1. 合适地添加索引
2. 可以考虑用 tokudb 的压缩数据库引擎,可以更快地修改表结构,更快查询,占用空间更小
3. 如果对查询的效率要求比较高,可以考虑下列式存储的数据库
4. 如果增删改查都比较频繁,并且数据库格式比较简单,可以考虑 redis 这类内存数据库
RickyC
2020-07-09 14:39:51 +08:00
@saulshao

1. 1MB/条, 是因为有一个大的 JSON 字段, 存储一些用于计算的数据
2. 查询条件很复杂, 最终要得到的是那个大的 json; 是通过对其他列数据的筛选, 最终得到 json
kiracyan
2020-07-09 14:42:37 +08:00
@RickyC json 单独存放
RickyC
2020-07-09 14:43:58 +08:00
@kiracyan json 如何单独存放? 存在另外一个表里?
ChoateYao
2020-07-09 14:47:29 +08:00
1 万条数据 /10G,不是索引的问题,是磁盘 IO 和网络 IO 问题,你用 MySQL 怎么处理都不可能避免这一部分。
kiracyan
2020-07-09 14:48:43 +08:00
@RickyC 存另外表也可以 存 mongodb 获者其他的也行 具体要看你业务的
594duck
2020-07-09 14:56:26 +08:00
@RickyC 加配置,这是撑 IO 和配置撑的上的事情。
bthulu
2020-07-09 15:14:47 +08:00
数据库里不存这个 json, 直接按 id 名写到文件里. 查询到 id 后, 直接读这个文件就行了
saulshao
2020-07-09 15:22:22 +08:00
楼上(9#)的建议已经很中肯了,如果你不需要查询这个 Json 本身,就这么办最合适。
这个其实就按照常规的做法来做就行,你可以试试看写入 10000 行数据需要多久,查询的瓶颈应该不在于查询本身,而是查询完成后加载结果集的时间会非常长。
murmur
2020-07-09 15:25:46 +08:00
10gb 这个应该是对象存储了,如果是文本的话得弄全文索引,mysql 不行,这怕是一行就是一本色库全书
gainsurier
2020-07-09 15:34:40 +08:00
才 10000 条就不要用 MySQL 了
Mac
2020-07-09 15:37:16 +08:00
瓶颈不在数据库种类,而是 io
wangyzj
2020-07-09 15:39:49 +08:00
这个取决于你要怎么查询
是否有 全文索引等等
opengps
2020-07-09 16:04:03 +08:00
标题里的 10GB/10000 条 是啥意思?
10G 有问题,还是 10000 条有问题?把斜线理解成或者,那么几乎没区别,把单行数据理解为 10M,那这个过程太耗时确实会出现一些 io 等问题
mosliu
2020-07-09 16:07:33 +08:00
如果不需要那串 json 参与查询的话
json 单独存放 文件、hbase 等都可以
然后 mysql 存一个指向列表
搜索做好索引。
xsm1890
2020-07-09 16:09:47 +08:00
大字段 json 建议单独存储,再 mysql 存储一个指向。。mysql 是按页存储数据的,为 16k,数据过大出现大量的行迁移,查询性能及写入性能都不会很好
kanepan19
2020-07-09 16:29:03 +08:00
存文件,比如 OSS.
要全文检索的, 同步到 es 里去.
luckoct
2020-07-09 16:41:13 +08:00
感觉存到 mongodb 挺合适
pkupyx
2020-07-09 22:42:54 +08:00
不如直接存文件,mysql 指向 URL

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/688551

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX