V2EX = way to explore
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 · 2020-07-09 14:25:27 +08:00 · 3794 次点击
    这是一个创建于 1589 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    谢谢

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

    1. 1MB/条, 是因为有一个大的 JSON 字段, 存储一些用于计算的数据
    2. 查询条件很复杂, 最终要得到的是那个大的 json; 是通过对其他列数据的筛选, 最终得到 json
    kiracyan
        4
    kiracyan  
       2020-07-09 14:42:37 +08:00
    @RickyC json 单独存放
    RickyC
        5
    RickyC  
    OP
       2020-07-09 14:43:58 +08:00
    @kiracyan json 如何单独存放? 存在另外一个表里?
    ChoateYao
        6
    ChoateYao  
       2020-07-09 14:47:29 +08:00
    1 万条数据 /10G,不是索引的问题,是磁盘 IO 和网络 IO 问题,你用 MySQL 怎么处理都不可能避免这一部分。
    kiracyan
        7
    kiracyan  
       2020-07-09 14:48:43 +08:00
    @RickyC 存另外表也可以 存 mongodb 获者其他的也行 具体要看你业务的
    594duck
        8
    594duck  
       2020-07-09 14:56:26 +08:00
    @RickyC 加配置,这是撑 IO 和配置撑的上的事情。
    bthulu
        9
    bthulu  
       2020-07-09 15:14:47 +08:00
    数据库里不存这个 json, 直接按 id 名写到文件里. 查询到 id 后, 直接读这个文件就行了
    saulshao
        10
    saulshao  
       2020-07-09 15:22:22 +08:00   ❤️ 1
    楼上(9#)的建议已经很中肯了,如果你不需要查询这个 Json 本身,就这么办最合适。
    这个其实就按照常规的做法来做就行,你可以试试看写入 10000 行数据需要多久,查询的瓶颈应该不在于查询本身,而是查询完成后加载结果集的时间会非常长。
    murmur
        11
    murmur  
       2020-07-09 15:25:46 +08:00
    10gb 这个应该是对象存储了,如果是文本的话得弄全文索引,mysql 不行,这怕是一行就是一本色库全书
    gainsurier
        12
    gainsurier  
       2020-07-09 15:34:40 +08:00
    才 10000 条就不要用 MySQL 了
    Mac
        13
    Mac  
       2020-07-09 15:37:16 +08:00 via Android
    瓶颈不在数据库种类,而是 io
    wangyzj
        14
    wangyzj  
       2020-07-09 15:39:49 +08:00
    这个取决于你要怎么查询
    是否有 全文索引等等
    opengps
        15
    opengps  
       2020-07-09 16:04:03 +08:00
    标题里的 10GB/10000 条 是啥意思?
    10G 有问题,还是 10000 条有问题?把斜线理解成或者,那么几乎没区别,把单行数据理解为 10M,那这个过程太耗时确实会出现一些 io 等问题
    mosliu
        16
    mosliu  
       2020-07-09 16:07:33 +08:00
    如果不需要那串 json 参与查询的话
    json 单独存放 文件、hbase 等都可以
    然后 mysql 存一个指向列表
    搜索做好索引。
    xsm1890
        17
    xsm1890  
       2020-07-09 16:09:47 +08:00   ❤️ 1
    大字段 json 建议单独存储,再 mysql 存储一个指向。。mysql 是按页存储数据的,为 16k,数据过大出现大量的行迁移,查询性能及写入性能都不会很好
    kanepan19
        18
    kanepan19  
       2020-07-09 16:29:03 +08:00
    存文件,比如 OSS.
    要全文检索的, 同步到 es 里去.
    luckoct
        19
    luckoct  
       2020-07-09 16:41:13 +08:00
    感觉存到 mongodb 挺合适
    pkupyx
        20
    pkupyx  
       2020-07-09 22:42:54 +08:00
    不如直接存文件,mysql 指向 URL
    wentaoliang
        21
    wentaoliang  
       2020-07-09 23:03:31 +08:00
    mysql 只存一个 uuid,拿 uuid 做 key 存到 hbase 里
    creatdate
        22
    creatdate  
       2020-07-10 09:30:15 +08:00
    我都是在数据库里存地址路径 FilePath,把 json 、xml 、图片、pdf 文件改名,直接放磁盘上,目前还没见过有人把文件存数据库的。(事实上如果文件内容相对固定且 size 很小,我认为放数据库也没什么不妥)
    RickyC
        23
    RickyC  
    OP
       2020-07-10 10:43:24 +08:00
    h123123h
        24
    h123123h  
       2020-07-10 14:06:24 +08:00
    mysql 存 id,根据 id 去 es 或者 mongodb 去查?
    northernlights
        25
    northernlights  
       2020-07-10 17:14:28 +08:00
    一看到这标题就感觉不正常,你是把图片放数据库里了吧?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1015 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 21:49 · PVG 05:49 · LAX 13:49 · JFK 16:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.