对单表数据达到 10GB/10000 条的数据, 用 MySQL 如何存储, 查询速度更快? - V2EX
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
RickyC
V2EX    MySQL

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

  •  1
     
  •   RickyC Jul 9, 2020 4547 views
    This topic created in 2149 days ago, the information mentioned may be changed or developed.

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

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

    谢谢

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

    1. 1MB/条, 是因为有一个大的 JSON 字段, 存储一些用于计算的数据
    2. 查询条件很复杂, 最终要得到的是那个大的 json; 是通过对其他列数据的筛选, 最终得到 json
    kiracyan
        4
    kiracyan  
       Jul 9, 2020
    @RickyC json 单独存放
    td width="10" valign="top">
    RickyC
        5
    RickyC  
    OP
       Jul 9, 2020
    @kiracyan json 如何单独存放? 存在另外一个表里?
    ChoateYao
        6
    ChoateYao  
       Jul 9, 2020
    1 万条数据 /10G,不是索引的问题,是磁盘 IO 和网络 IO 问题,你用 MySQL 怎么处理都不可能避免这一部分。
    kiracyan
        7
    kiracyan  
       Jul 9, 2020
    @RickyC 存另外表也可以 存 mongodb 获者其他的也行 具体要看你业务的
    594duck
        8
    594duck  
       Jul 9, 2020
    @RickyC 加配置,这是撑 IO 和配置撑的上的事情。
    bthulu
        9
    bthulu  
       Jul 9, 2020
    数据库里不存这个 json, 直接按 id 名写到文件里. 查询到 id 后, 直接读这个文件就行了
    saulshao
        10
    saulshao  
       Jul 9, 2020   1
    楼上(9#)的建议已经很中肯了,如果你不需要查询这个 Json 本身,就这么办最合适。
    这个其实就按照常规的做法来做就行,你可以试试看写入 10000 行数据需要多久,查询的瓶颈应该不在于查询本身,而是查询完成后加载结果集的时间会非常长。
    murmur
        11
    murmur  
       Jul 9, 2020
    10gb 这个应该是对象存储了,如果是文本的话得弄全文索引,mysql 不行,这怕是一行就是一本色库全书
    gainsurier
        12
    gainsurier  
       Jul 9, 2020
    才 10000 条就不要用 MySQL 了
    Mac
        13
    Mac  
       Jul 9, 2020 via Android
    瓶颈不在数据库种类,而是 io
    wangyzj
        14
    wangyzj  
       Jul 9, 2020
    这个取决于你要怎么查询
    是否有 全文索引等等
    opengps
        15
    opengps  
       Jul 9, 2020
    标题里的 10GB/10000 条 是啥意思?
    10G 有问题,还是 10000 条有问题?把斜线理解成或者,那么几乎没区别,把单行数据理解为 10M,那这个过程太耗时确实会出现一些 io 等问题
    mosliu
        16
    mosliu  
       Jul 9, 2020
    如果不需要那串 json 参与查询的话
    json 单独存放 文件、hbase 等都可以
    然后 mysql 存一个指向列表
    搜索做好索引。
    xsm1890
        17
    xsm1890  
       Jul 9, 2020   1
    大字段 json 建议单独存储,再 mysql 存储一个指向。。mysql 是按页存储数据的,为 16k,数据过大出现大量的行迁移,查询性能及写入性能都不会很好
    kanepan19
        18
    kanepan19  
       Jul 9, 2020
    存文件,比如 OSS.
    要全文检索的, 同步到 es 里去.
    luckoct
        19
    luckoct  
       Jul 9, 2020
    感觉存到 mongodb 挺合适
    pkupyx
        20
    pkupyx  
       Jul 9, 2020
    不如直接存文件,mysql 指向 URL
    wentaoliang
        21
    wentaoliang  
       Jul 9, 2020
    mysql 只存一个 uuid,拿 uuid 做 key 存到 hbase 里
    creatdate
        22
    creatdate  
       Jul 10, 2020
    我都是在数据库里存地址路径 FilePath,把 json 、xml 、图片、pdf 文件改名,直接放磁盘上,目前还没见过有人把文件存数据库的。(事实上如果文件内容相对固定且 size 很小,我认为放数据库也没什么不妥)
    h123123h
        24
    h123123h  
       Jul 10, 2020
    mysql 存 id,根据 id 去 es 或者 mongodb 去查?
    northernlights
        25
    northernlights  
       Jul 10, 2020
    一看到这标题就感觉不正常,你是把图片放数据库里了吧?
    About     Help     Advertise     Blog     API     FAQ     Solana     3208 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 125ms UTC 13:06 PVG 21:06 LAX 06:06 JFK 09:06
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86