MySQL数据库实践学习(十五)
2023-06-13 09:13:59 时间
3.5.2.4 测试
配置完毕后,重新启动MyCat,然后在mycat的命令行中,执行如下SQL创建表、并插入数据,查看数据分布情况。
CREATE TABLE tb_log (
id bigint(20) NOT NULL COMMENT 'ID',
model_name varchar(200) DEFAULT NULL COMMENT '模块名',
model_value varchar(200) DEFAULT NULL COMMENT '模块值',
return_value varchar(200) DEFAULT NULL COMMENT '返回值',
return_class varchar(200) DEFAULT NULL COMMENT '返回值类型',
operate_user varchar(20) DEFAULT NULL COMMENT '操作用户',
operate_time varchar(20) DEFAULT NULL COMMENT '操作时间',
param_and_value varchar(500) DEFAULT NULL COMMENT '请求参数名及参数值',
operate_class varchar(200) DEFAULT NULL COMMENT '操作类',
operate_method varchar(200) DEFAULT NULL COMMENT '操作方法',
cost_time bigint(20) DEFAULT NULL COMMENT '执行方法耗时, 单位 ms',
source int(1) DEFAULT NULL COMMENT '来源 : 1 PC , 2 Android , 3 IOS',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
INSERT INTO tb_log (id, model_name, model_value, return_value, return_class,
operate_user, operate_time, param_and_value, operate_class, operate_method,
cost_time,source)
VALUES('1','user','insert','success','java.lang.String','10001','2022-01-06
18:12:28','{\"age\":\"20\",\"name\":\"Tom\",\"gender\":\"1\"}','cn.itcast.contro
ller.UserController','insert','10',1);
INSERT INTO tb_log (id, model_name, model_value, return_value, return_class,
operate_user, operate_time, param_and_value, operate_class, operate_method,
cost_time,source)
VALUES('2','user','insert','success','java.lang.String','10001','2022-01-06
18:12:27','{\"age\":\"20\",\"name\":\"Tom\",\"gender\":\"1\"}','cn.itcast.contro
ller.UserController','insert','23',1);
INSERT INTO tb_log (id, model_name, model_value, return_value, return_class,
operate_user, operate_time, param_and_value, operate_class, operate_method,
cost_time,source)
VALUES('3','user','update','success','java.lang.String','10001','2022-01-06
18:16:45','{\"age\":\"20\",\"name\":\"Tom\",\"gender\":\"1\"}','cn.itcast.contro
ller.UserController','update','34',1);
INSERT INTO tb_log (id, model_name, model_value, return_value, return_class,
operate_user, operate_time, param_and_value, operate_class, operate_method,
cost_time,source)
VALUES('4','user','update','success','java.lang.String','10001','2022-01-06
18:16:45','{\"age\":\"20\",\"name\":\"Tom\",\"gender\":\"1\"}','cn.itcast.contro
ller.UserController','update','13',2);
INSERT INTO tb_log (id, model_name, model_value, return_value, return_class,
operate_user, operate_time, param_and_value, operate_class, operate_method,
cost_time,source)
VALUES('5','user','insert','success','java.lang.String','10001','2022-01-06
18:30:31','{\"age\":\"200\",\"name\":\"TomCat\",\"gender\":\"0\"}','cn.itcast.co
ntroller.UserController','insert','29',3);
INSERT INTO tb_log (id, model_name, model_value, return_value, return_class,
operate_user, operate_time, param_and_value, operate_class, operate_method,
cost_time,source)
VALUES('6','user','find','success','java.lang.String','10001','2022-01-06
18:30:31','{\"age\":\"200\",\"name\":\"TomCat\",\"gender\":\"0\"}','cn.itcast.co
ntroller.UserController','find','29',2);
3.5.3 分片规则
3.5.3.1 范围分片
1). 介绍
根据指定的字段及其配置的范围与数据节点的对应情况, 来决定该数据属于哪一个分片。
2). 配置
schema.xml逻辑表配置:
<table name="TB_ORDER" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" />
schema.xml数据节点配置:
<dataNode name="dn1" dataHost="dhost1" database="db01" />
<dataNode name="dn2" dataHost="dhost2" database="db01" />
<dataNode name="dn3" dataHost="dhost3" database="db01" />
rule.xml分片规则配置:
<tableRule name="auto-sharding-long">
<rule>
<columns>id</columns>
<algorithm>rang-long</algorithm>
</rule>
</tableRule>
<function name="rang-long" class="io.mycat.route.function.AutoPartitionByLong">
<property name="mapFile">autopartition-long.txt</property>
<property name="defaultNode">0</property>
</function>
分片规则配置属性含义:
在rule.xml中配置分片规则时,关联了一个映射配置文件 autopartition-long.txt,该配置文
件的配置如下:
# range start-end ,data node index
# K=1000,M=10000.
0-500M=0
500M-1000M=1
1000M-1500M=2
含义:0-500万之间的值,存储在0号数据节点(数据节点的索引从0开始) ;500万-1000万之间的数据存储在1号数据节点 ;1000万-1500万的数据节点存储在2号节点 ;
该分片规则,主要是针对于数字类型的字段适用。在MyCat的入门程序中,我们使用的就是该分片规则。
相关文章
- 【数据库原理与运用|MySQL】MySQL视图的使用
- 和重启MySQL数据库停止与重启操作指南(mysql数据库的停止)
- MySQL:添加字段属性的步骤(mysql添加字段属性)
- 备份MySQL 数据库時間性備份方案(mysql数据时间)
- MySQL数据导入的简单指令(mysql数据导入命令)
- Mysql查看并了解外键及其使用方法(mysql查看外键)
- MySQL简介:开放源代码数据库管理系统(mysql简介)
- MySQL 时间据类型深度解析(mysql时间的数据类型)
- 指南:选择MySQL数据库的最佳方法(如何选择mysql数据库)
- MySQL DATABASE基础代码:入门指南(mysql数据库基础代码)
- MySQL数据库的最大并发访问控制方法探究(mysql最大并发)
- MySQL中MD5加密的使用方法(mysql的md5加密)
- MySQL数据锁定如何解除?(mysql如何解锁)
- 数据库提高效率的步骤:升级 MySQL 数据库(升级mysql)
- MySQL定期清理,优化数据库空间(mysql定期删除数据)
- 解决MySQL脏读问题的方法(mysql如何脏读)
- MySQL数据库访问之道:便利且安全(mysql数据库访问方式)
- 如何在Windows系统中添加MySQL的环境变量?(添加mysql的环境变量)
- 深入浅出,让你彻底了解MySQL数据库的索引优化技巧(mysql数据库的索引)
- MySQL的普通日志:记录数据库操作轨迹(mysql的普通日志)
- MySQL 多字段模糊查询实现方法分享(mysql多字段模糊查询)
- 如何更有效地清理MySQL数据库(mysql 清理数据库)
- 使用Java监听MySQL数据库变化(java监听mysql)
- MySQL命令快速导入数据库(mysql命令导入数据库)
- 查看MySQL表是否已被锁定(mysql查询表是否被锁)
- MySQL 数据库中的 exp 函数简介(mysql中exp是什么)
- APP快速连接MySQL数据库的指南(app怎么连接mysql)
- 无缝操作MySQL实现不停机拆表,提升数据库管理效率(mysql不停机拆表)
- MySQL官网下载是否收费一篇简短解答(mysql下载官网要钱吗)
- 解决MySQL上传速度慢问题的有效方法(mysql上传速度慢)
- 揭秘MySQL表字符集不是UTF8的真相(mysql不是utf8)