mysql 如何把一张表拆分成多表 - V2EX
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
letitbesqzr
V2EX    MySQL

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

  •  
  •   letitbesqzr 2014-08-08 17:15:37 +08:00 6335 次点击
    这是一个创建于 4096 天前的主题,其中的信息可能已经有所发展或是发生改变。
    情况是这样,一张表大概有2e的数据,使用solr建索引总会出现莫名其妙的错误,比如内存不足之类的...

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

    请问有什么工具能做到,如果插入新数据,该如何做到id不变的情况下自动分?
    17 条回复    2014-08-09 10:07:38 +08:00
    plprapper
        1
    plprapper  
       2014-08-08 17:50:02 +08:00   1
    ID不变 是啥意思?
    dong3580
        2
    dong3580  
       2014-08-08 17:56:51 +08:00   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  
       2014-08-08 18:06:00 +08:00   1
    内存不足,你多分几个表有用么
    wodemyworld
        4
    wodemyworld  
       2014-08-08 18:06:40 +08:00   1
    顶多是查询速度快点罢了,而且这样分表和纵向分区有啥区别呢
    letitbesqzr
        5
    letitbesqzr  
    OP
       2014-08-08 18:28:14 +08:00
    @wodemyworld 建立索引的时候,单表太大了 会出现内存不足
    Mac
        6
    Mac  
       2014-08-08 19:16:14 +08:00   1
    加内存
    letitbesqzr
        7
    letitbesqzr  
    OP
       2014-08-08 19:48:48 +08:00
    @Mac 32G了...
    letitbesqzr
        8
    letitbesqzr  
    OP
       2014-08-08 19:51:18 +08:00
    @Mac
    @wodemyworld
    @dong3580
    @plprapper

    其实就是想做一个,,所谓的"密码查询"的东西... 没怎么接触过大数据,之前一时糊涂,所有数据都导到一张表.. 建立索引的时候各种问题.. 现在把每个网站的"密码" 都单独分一张表,然后再建立索引,这样就正常查询了 速度也很快.. 用的solr 8E数据大概0.2秒
    x10ng
        9
    x10ng  
       2014-08-08 22:53:25 +08:00   1
    写个脚本就可以做到啊,你要对什么字段建索引? 另外,可以试试mongodb
    bojieyang
        10
    bojieyang  
       2014-08-08 23:57:27 +08:00   1
    这个就是水平分表嘛,可以参考TDDL。
    eslizn
        11
    eslizn  
       2014-08-09 00:57:23 +08:00   1
    其实分表的关键在于怎么路由表
    letitbesqzr
        12
    letitbesqzr  
    OP
       2014-08-09 01:10:50 +08:00
    @eslizn 这个倒是无所谓,用solr 建立好索引后,直接是全部表查询.
    letitbesqzr
        13
    letitbesqzr  
    OP
       2014-08-09 01:11:24 +08:00
    @bojieyang 3Q 但是表已经建立好了
    ETiV
        14
    ETiV  
       2014-08-09 03:32:04 +08:00   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  
       2014-08-09 04:31:11 +08:00   1
    社工库?
    letitbesqzr
        16
    letitbesqzr  
    OP
       2014-08-09 07:57:56 +08:00
    @Vonex 是的 ..
    frankzeng
        17
    frankzeng  
       2014-08-09 10:07:38 +08:00
    别分表,用分区嘛
    关于    帮助文档     自助推广系统     博客     API     FAQ     Solana     844 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 20:25 PVG 04:25 LAX 13:25 JFK 16:25
    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