zoukankan      html  css  js  c++  java
  • Atlas 分表功能

    分表原因

    1.数据过多,访问缓慢

    2.创建索引时重新排序,创建缓慢,并且占用大量的磁盘空间

    分表方式

    1.根据数据范围分表

    2.根据取模的方式(取余数)

    Atlas 分表

    分表思路

    1.确定分表的库,表,字段
    2.确定分表的数量
    3.分表的名字,stu_0,stu_1,stu_2
    4.配置文件配置分表的规则
    5.测试
    

    配置 Atlas

    [root@db03 ~]# vim /usr/local/mysql-proxy/conf/test.cnf
    #分表设置,此例中school为库名,stu为表名,id为分表字段,3为子表数量,可设置多项,以逗号分隔,若不分表则不需要设置该项
    tables = school.stu.id.3
    
    
    
    # 重启 Atlas
    [root@db03 ~]# /usr/local/mysql-proxy/bin/mysql-proxyd test restart
    OK: MySQL-Proxy of test is stopped
    OK: MySQL-Proxy of test is started
    

    创建原表

    # 连接Atlas负载数据库
    [root@db03 ~]# mysql -umha -pmha -h127.0.0.1 -P 1234
    
    # 创建数据库
    mysql> create database school;
    Query OK, 1 row affected (0.00 sec)
    
    # 创建数据表
    mysql> use school
    Database changed
    mysql> create table stu(id int,name varchar(10));
    Query OK, 0 rows affected (0.13 sec)
    

    创建分表

    # 创建分表,表名要保证如下格式,否则报错
    mysql> create table stu_0 like stu;
    Query OK, 0 rows affected (0.08 sec)
    
    mysql> create table stu_1 like stu;
    Query OK, 0 rows affected (0.03 sec)
    
    mysql> create table stu_2 like stu;
    Query OK, 0 rows affected (0.03 sec)
    

    数据测试

    # 插入数据
    mysql> insert into stu values(1,'wqh');
    Query OK, 1 row affected (0.01 sec)
    
    mysql> insert into stu values(2,'wqh');
    Query OK, 1 row affected (0.00 sec)
    
    mysql> insert into stu values(3,'wqh3');
    Query OK, 1 row affected (0.01 sec)
    
    mysql> insert into stu values(11,'wqh3');
    Query OK, 1 row affected (0.01 sec)
    
    mysql> insert into stu values(12,'wqh3');
    Query OK, 1 row affected (0.00 sec)
    
    mysql> insert into stu values(13,'wqh3');
    Query OK, 1 row affected (0.02 sec)
    
    # 查看数据
    mysql> select * from stu;
    Empty set (0.00 sec)
    
    mysql> select * from stu_0;
    +------+------+
    | id   | name |
    +------+------+
    |    3 | wqh3 |
    |   12 | wqh3 |
    +------+------+
    2 rows in set (0.03 sec)
    
    mysql> select * from stu_1;
    +------+------+
    | id   | name |
    +------+------+
    |    1 | wqh  |
    |   13 | wqh3 |
    +------+------+
    2 rows in set (0.00 sec)
    
    mysql> select * from stu_2;
    +------+------+
    | id   | name |
    +------+------+
    |    2 | wqh  |
    |   11 | wqh3 |
    +------+------+
    2 rows in set (0.00 sec)
    
    # 如果想查看原表数据,需要加 where条件
    mysql> select * from stu where id=1;
    +------+------+
    | id   | name |
    +------+------+
    |    1 | wqh  |
    +------+------+
    1 rows in set (0.00 sec)
    
  • 相关阅读:
    luogu4345 [SHOI2015]超能粒子炮·改(组合数/Lucas定理)
    关于 centos 7系统,iptables透明网桥实现
    C 语言实现字符串替换
    linux 程序调用system执行命令
    linux C/C++ 日志打印函数
    关于socket编程获取客户端地址笔记
    C# treeview 使用笔记
    SIP DB33标准笔记 监控图像获取
    SIP DB33标准笔记 注册/目录发送/心跳
    contos 7/redhat 7 安装mysql
  • 原文地址:https://www.cnblogs.com/zzzwqh/p/13399867.html
Copyright © 2011-2022 走看看