Mysql数据库 因为实时的数据有操作
我现在要把mysql的几张表的记录 达到一定的条件导出  (如果频繁的操作,有可能丢数据)
所以现在考虑分区 就是比如我 a表的数据达到10000条的时候 把 a b c d表重新分一个文件
要的效果如下
a1  1-10000
a2  10000-20000
.....
而且 我可以把a1拷走 并可以删掉 
这样要怎么实现呢  可以实现吗?

解决方案 »

  1.   

    可以使用MYSQL的分区表功能来实现。http://dev.mysql.com/doc/refman/5.1/zh/partitioning.html
    18. 分区
    18.1. MySQL中的分区概述
    18.2. 分区类型
    18.2.1. RANGE分区
    18.2.2. LIST分区
    18.2.3. HASH分区
    18.2.4. KEY分区
    18.2.5. 子分区
    18.2.6. MySQL分区处理NULL值的方式
      

  2.   

    版本一定要超过5.1的吗?
    mysql  Ver 14.12 Distrib 5.0.83, for unknown-openbsd4.6 (i386) using readline 4.3
    我现在版本才5.0.83  看来还要升级下
      

  3.   

    汗我ob系统 升级错误unvis.c:76: error: syntax error before "int"这个能解决吗?
      

  4.   

    使用mysql 5.1最新release版,利用range分区可以解决你的问题。
      

  5.   

    精确按条数来控制100000 条,做不到,需要你的这个分区字段来控制,比如表中有一个ID字段,从1到N连续,则可以按这个N来分区。MYSQL帮助文档中有例子。
      

  6.   

    我知道了
    我写了一个例子
    CREATE TABLE testts (    
    id INT NOT NULL,    
    fname VARCHAR(30),    
    lname VARCHAR(30)
    )
    PARTITION BY RANGE (id) (    
    PARTITION p0 VALUES LESS THAN (5),    
    PARTITION p1 VALUES LESS THAN (10),    
    PARTITION p2 VALUES LESS THAN (15),    
    PARTITION p3 VALUES LESS THAN MAXVALUE
    );
    我分了文件如下
    testts.frm  testts#P#p0.MYD  testts#P#p1.MYD  testts#P#p2.MYD  testts#P#p3.MYD
    testts.par  testts#P#p0.MYI  testts#P#p1.MYI  testts#P#p2.MYI  testts#P#p3.MYI
    我现在想单独查看testts#P#p0的数据要怎么看呢  
      

  7.   

    分表的数据 能单独看吗
    我这样做的原因是因为 testts是一直在操作了 (如果也去解析的话 性能就没那么好了)
    所以我用分表 把数据分段的去查看和解析 
    所以现在有三个问题
    1.我分区好了 分表能单独的弄出去查看解析吗?
    2.如果我的分表能多次利用吗  比如前10000条在testts#P#p0  我解析完后会把数据清掉 然后让50000的数据
    3.就是怎么把单独的分区表 进行查看内部数据呢?
      

  8.   

    可以
    你可以继续添加分区
    这个需要几步:
    1。用同样的语句创建一个新表无分区
    CREATE TABLE rnon637 (    
        id INT NOT NULL,    
        fname VARCHAR(30),    
        lname VARCHAR(30)
    ) engine=myisam;

    2。在操作系统下,将分区表的 myd, myi 复制为rnon637.myd, myi
    C:\Program Files\MySQL\MySQL Server 5.1\DATA\csdn>copy testts#P#p0.MYD rnon637.myd
    Overwrite rnon637.myd? (Yes/No/All): y
            1 file(s) copied.C:\Program Files\MySQL\MySQL Server 5.1\DATA\csdn>copy testts#P#p0.MYI rnon637.myi
    Overwrite rnon637.myi? (Yes/No/All): y
            1 file(s) copied.然后就可以直接 select * from rnon637