› 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
letitbesqzr
V2EX  ›  MySQL

mysql 如何把一张表拆分成多表

  •  
  •   letitbesqzr · Aug 8, 2014 · 7164 views
    This topic created in 4464 days ago, the information mentioned may be changed or developed.
    情况是这样,一张表大概有2e的数据,使用solr建索引总会出现莫名其妙的错误,比如内存不足之类的...

    想把那表分成以下这样,每张表分别存储1kw的数据(id不变).
    xxx_1
    xxx_2
    xxx_3
    xxx_4
    xxx_....

    请问有什么工具能做到,如果插入新数据,该如何做到id不变的情况下自动分?
    17 replies  •  2014-08-09 10:07:38 +08:00
    plprapper
        1
    plprapper  
       Aug 8, 2014   ❤️ 1
    ID不变 是啥意思?
    dong3580
        2
    dong3580  
       Aug 8, 2014   ❤️ 1
    每个表加个id嘛,自动增长,发现id大于1KW,try {create table},然后id发现大于2kw就再次try{create table}。

    查询的时候,如果id在2KW-3KW之间,就在xxx_3中查找,所以,你可以封装个简单的逻辑方法来处理。
    我去年改一个网站就发现它是这么玩的。

    再看了看,你要求每个表id不变么?其实还是差不多,第一个表id 0-1kw,第二个表还是id 0-1kw,例如查询a(2kw-3kw)的话就在, (Int)(a/1KW)取整拼接上xxx_就是表名了,不过可能没第一种方便罢了。

    另外,不建议这么做,感觉好混乱的样子。
    wodemyworld
        3
    wodemyworld  
       Aug 8, 2014   ❤️ 1
    内存不足,你多分几个表有用么
    wodemyworld
        4
    wodemyworld  
       Aug 8, 2014   ❤️ 1
    顶多是查询速度快点罢了,而且这样分表和纵向分区有啥区别呢
    letitbesqzr
        5
    letitbesqzr  
    OP
       Aug 8, 2014
    @wodemyworld 建立索引的时候,单表太大了 会出现内存不足
    Mac
        6
    Mac  
       Aug 8, 2014   ❤️ 1
    加内存
    letitbesqzr
        7
    letitbesqzr  
    OP
       Aug 8, 2014
    @Mac 32G了...
    letitbesqzr
        8
    letitbesqzr  
    OP
       Aug 8, 2014
    @Mac
    @wodemyworld
    @dong3580
    @plprapper

    其实就是想做一个,,所谓的"密码查询"的东西... 没怎么接触过大数据,之前一时糊涂,所有数据都导到一张表.. 建立索引的时候各种问题.. 现在把每个网站的"密码" 都单独分一张表,然后再建立索引,这样就正常查询了 速度也很快.. 用的solr 8E数据大概0.2秒
    x10ng
        9
    x10ng  
       Aug 8, 2014   ❤️ 1
    写个脚本就可以做到啊,你要对什么字段建索引? 另外,可以试试mongodb
    bojieyang
        10
    bojieyang  
       Aug 8, 2014   ❤️ 1
    这个就是水平分表嘛,可以参考TDDL。
    eslizn
        11
    eslizn  
       Aug 9, 2014   ❤️ 1
    其实分表的关键在于怎么路由表
    letitbesqzr
        12
    letitbesqzr  
    OP
       Aug 9, 2014
    @eslizn 这个倒是无所谓,用solr 建立好索引后,直接是全部表查询.
    letitbesqzr
        13
    letitbesqzr  
    OP
       Aug 9, 2014
    @bojieyang 3Q 但是表已经建立好了
    ETiV
        14
    ETiV  
       Aug 9, 2014   ❤️ 1
    insert into table_1[2,3,4,5,6,7,8,9](columns, ...) select columns,... from source_table where id % 10 = 1[2,3,4,5,6,7,8,9];

    酱紫?
    Vonex
        15
    Vonex  
       Aug 9, 2014   ❤️ 1
    社工库?
    letitbesqzr
        16
    letitbesqzr  
    OP
       Aug 9, 2014
    @Vonex 是的 ..
    frankzeng
        17
    frankzeng  
       Aug 9, 2014
    别分表,用分区嘛
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1281 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 19:55 · PVG 03:55 · LAX 12:55 · JFK 15:55
    ♥ Do have faith in what you're doing.