测试Atlas的分表功能

开启Atlas分表功能

vi /usr/local/mysql-proxy/conf/test.cnf

修改参数

tables = demo.ms.id.3

demo为数据库,ms为表,age为字段,3为分表的个数
ps:表序号是从0开始的
修改之后重启Atlas

/usr/local/mysql-proxy/bin/mysql-proxyd test restart

下面开始创建3个表

CREATE TABLE `demo`.`ms_0` (
`id` INT(8) NOT NULL primary key AUTO_INCREMENT , 
`age` INT(3) NOT NULL,
`name` varchar(10) not null)
ENGINE = InnoDB;

CREATE TABLE `demo`.`ms_1` (
`id` INT(8) NOT NULL primary key AUTO_INCREMENT , 
`age` INT(3) NOT NULL,
`name` varchar(10) not null)
ENGINE = InnoDB;

CREATE TABLE `demo`.`ms_2` (
`id` INT(8) NOT NULL primary key AUTO_INCREMENT , 
`age` INT(3) NOT NULL,
`name` varchar(10) not null)
ENGINE = InnoDB;

写一个test.php的文件,用程序执行sql

<?php
$mysql_server_name="192.168.171.132:1234"; //数据库服务器名称
$mysql_username="root"; // 连接数据库用户名
$mysql_password="123456"; // 连接数据库密码
$mysql_database="demo"; // 数据库的名字

// 连接到数据库
$conn=mysql_connect($mysql_server_name, $mysql_username,
					$mysql_password);
for($i=0;$i<100;$i++){
	$c=rand(1,100);
	$strsql="insert into ms(id,age,name)value(".$i.",".$c.",'".rand_name()."')";
$result=mysql_db_query($mysql_database, $strsql, $conn);	
}
function rand_name(){
	for ($i = 1; $i <= 4; $i++) {
		$str.= chr(rand(97, 122));
	}
	return $str;
}

根据上面的配置以id字段分表
执行结果

【ms_0表数据】

ms_0表数据

【ms_1表数据】

ms_1表数据

【ms_2表数据】

ms_2表数据

PS:当通过Atlas执行(SELECT、DELETE、UPDATE、INSERT、REPLACE)操作时,Atlas会根据分表结果(id%3=k),定位到相应的子表(ms_k)。例如,执行select * from ms where id=13;,Atlas会自动从ms_10这张子表返回查询结果。但如果执行SQL语句(select * from ms;)时不带上id,则会提示执行ms 表不存在

问题:这里我发现一个问题id=1的有两条数据的问题

TRUNCATE TABLE `ms_0`;
TRUNCATE TABLE `ms_1`;
TRUNCATE TABLE `ms_2`;

测试tables = demo.ms.name.3
测试结果
如果表的字段是字符型,不分表,插入ms0


QQ交流群:136351212
查看原文:http://www.phpsong.com/2389.html
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值