mycat 取模分片,ER分片
1、業務場景:使用者購物下單。
要求:把訂單分片,商家要查詢購買在訂單,使用者要查詢自己的訂單。
表設計:使用者,商家訂單,訂單明細,買方訂單
分片規則:
“使用者表”---user_id 取模,“商家訂單”----seller_user_id 取模
“訂單明細”----“商家訂單”ER 分片,“買家訂單”----buyer_user_id 取模
2、表
CREATE TABLE tb_user (
login_name VARCHAR (32) comment '登入名',
user_id BIGINT comment '使用者標識',
TYPE INT comment '使用者型別 1 商家,2買家',
passwd VARCHAR (128) comment '密碼',
primary key (user_id)
) ;
alter table tb_user comment '使用者表';
CREATE TABLE tb_seller_order (
seller_user_id BIGINT comment '商家標識',
buyer_user_id BIGINT comment '使用者標識',
order_id BIGINT comment '訂單標識',
price BIGINT comment '價格',
STATUS INT comment '狀態',
primary key (order_id)
);
alter table tb_seller_order comment '商家訂單表';
CREATE TABLE tb_order_detail(
seller_user_id BIGINT comment '商家標識',
order_detail_id BIGINT comment '訂單明細標識',
order_id BIGINT comment '訂單標識',
goods_id BIGINT comment '標識',
goods_name VARCHAR(32) comment '商品名稱',
cnt INT comment '數量',
unit_price INT comment '單價',
primary key (order_detail_id)
);
alter table tb_order_detail comment '訂單明細';
CREATE TABLE tb_buyer_order (
buyer_user_id BIGINT comment '使用者標識',
seller_user_id BIGINT comment '商家標識',
order_id BIGINT comment '訂單標識',
price BIGINT comment '價格',
STATUS INT comment '狀態',
primary key (order_id)
);
alter table tb_buyer_order comment '買家訂單';
3、伺服器分配:
mysql:
主 192.168.109.128 備192.168.109.130
主 192.168.109.131
主 192.168.109.132
mycat:
192.168.109.129
4、表主鍵生成策略使用mycat全域性序列生成(mycat 全域性序列號:http://blog.csdn.net/convict_eva/article/details/51917499)
新增mycat全域性序列號:
USER_ID_SQUE=dn_master
ORDER_ID_SQUE=dn_master
DETAIL_ID_SQUE=dn_master
在dn_master結點執行:
insert into MYCAT_SEQUENCE(NAME,current_value,increment)
values('USER_ID_SQUE',1,100),('ORDER_ID_SQUE',1,100),('DETAIL_ID_SQUE',1,100);
重啟mycat測試:
SELECT NEXT VALUE FOR MYCATSEQ_USER_ID_SQUE;
SELECT NEXT VALUE FOR MYCATSEQ_ORDER_ID_SQUE;
SELECT NEXT VALUE FOR MYCATSEQ_DETAIL_ID_SQUE;
5、配置分片規則
在mycat conf 目錄下的rule.xml 是分片規則的配置檔案。
5.1 配置function 標籤,找到function 標籤name="mod-long" 的function 配置,修改總結點數為3(和使用的mysql 結點數一致)。
<function name="mod-long" class="org.opencloudb.route.function.PartitionByMod">
<!-- how many data nodes -->
<property name="count">3</property>
</function>
5.2 配置表分片(name 要全域性唯一),rule.xml 配置新增如下配置
<!-- user分片規則 -->
<tableRule name="tb_user_mod-long">
<rule>
<!-- 分片使用的欄位 -->
<columns>user_id</columns>
<!-- 分片使用的方法,對應function 名稱 -->
<algorithm>mod-long</algorithm>
</rule>
</tableRule>
<!-- 賣家訂單分片規則 -->
<tableRule name="seller_order_mod-long">
<rule>
<columns>seller_user_id</columns>
<algorithm>mod-long</algorithm>
</rule>
</tableRule>
<!-- 買家訂單分片規則 -->
<tableRule name="buyer_order_mod-long">
<rule>
<columns>buyer_user_id</columns>
<algorithm>mod-long</algorithm>
</rule>
</tableRule>
6 schema.xml 配置
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://org.opencloudb/" >
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
<!-- auto sharding by id (long) -->
<table name="tb_a" dataNode="dn_master"/>
<!-- 全域性表,使用type屬性指定,多個結點要都執行建表語句。所有結點的資料一致。 -->
<table name="tb_global_test" dataNode="dn_master,dn_master2,dn_master3" type="global" />
<!-- 配置表所在的分片結點,指定主鍵和分片規則。指定主鍵是為了使用主鍵查詢時mycat什麼快取主鍵對應的dn,提高查詢效率。-->
<table name="tb_user" rule="tb_user_mod-long" primaryKey="user_id" dataNode="dn_master,dn_master2,dn_master3" />
<table name="tb_seller_order" rule="seller_order_mod-long" primaryKey="order_id" dataNode="dn_master,dn_master2,dn_master3" >
<!-- 配置ER 分片,子表的儲存依賴於主表,並且物理上緊鄰存放。 -->
<childTable name="tb_order_detail" primaryKey="order_detail_id" joinKey="order_id" parentKey="order_id" />
</table>
<table name="tb_buyer_order" rule="buyer_order_mod-long" primaryKey="order_id" dataNode="dn_master,dn_master2,dn_master3" />
</schema>
<!-- 配置資料結點 -->
<dataNode name="dn_master" dataHost="master" database="test_db" />
<dataNode name="dn_master2" dataHost="master2" database="test_db" />
<dataNode name="dn_master3" dataHost="master3" database="test_db" />
<!-- ddata node host 配置 -->
<dataHost name="master" maxCon="1000" minCon="10" balance="3"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<!-- 主從心跳語句配置 -->
<heartbeat>show slave status</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostM1" url="192.168.109.128:3306" user="root" password="[email protected]#">
<!-- 從庫 -->
<readHost host="hostS2" url="192.168.109.130:3306" user="root" password="[email protected]#" />
</writeHost>
</dataHost>
<dataHost name="master2" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM2" url="192.168.109.131:3306" user="root" password="[email protected]#"></writeHost>
</dataHost>
<dataHost name="master3" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM3" url="192.168.109.132:3306" user="root" password="[email protected]#"></writeHost>
</dataHost>
</mycat:schema>
重啟mycat,使用SQLyog連線到mycat,並執行建表語句。
7、測試
7.1、插入user
INSERT INTO `tb_user`(`login_name`,`user_id`,`TYPE`,`passwd`)
VALUES ('name-1',NEXT VALUE FOR MYCATSEQ_USER_ID_SQUE,1,'passwd-A');
INSERT INTO `tb_user`(`login_name`,`user_id`,`TYPE`,`passwd`)
VALUES ('name-2',NEXT VALUE FOR MYCATSEQ_USER_ID_SQUE,1,'passwd-A');
INSERT INTO `tb_user`(`login_name`,`user_id`,`TYPE`,`passwd`)
VALUES ('name-3',NEXT VALUE FOR MYCATSEQ_USER_ID_SQUE,1,'passwd-A');
INSERT INTO `tb_user`(`login_name`,`user_id`,`TYPE`,`passwd`)
VALUES ('name-4',NEXT VALUE FOR MYCATSEQ_USER_ID_SQUE,1,'passwd-A');
INSERT INTO `tb_user`(`login_name`,`user_id`,`TYPE`,`passwd`)
VALUES ('name-5',NEXT VALUE FOR MYCATSEQ_USER_ID_SQUE,1,'passwd-A');
INSERT INTO `tb_user`(`login_name`,`user_id`,`TYPE`,`passwd`)
VALUES ('name-6',NEXT VALUE FOR MYCATSEQ_USER_ID_SQUE,1,'passwd-A');
INSERT INTO `tb_user`(`login_name`,`user_id`,`TYPE`,`passwd`)
VALUES ('name-7',NEXT VALUE FOR MYCATSEQ_USER_ID_SQUE,1,'passwd-A');
INSERT INTO `tb_user`(`login_name`,`user_id`,`TYPE`,`passwd`)
VALUES ('name-8',NEXT VALUE FOR MYCATSEQ_USER_ID_SQUE,1,'passwd-A');
INSERT INTO `tb_user`(`login_name`,`user_id`,`TYPE`,`passwd`)
VALUES ('name-9',NEXT VALUE FOR MYCATSEQ_USER_ID_SQUE,1,'passwd-A');
INSERT INTO `tb_user`(`login_name`,`user_id`,`TYPE`,`passwd`)
VALUES ('name-10',NEXT VALUE FOR MYCATSEQ_USER_ID_SQUE,1,'passwd-A');
INSERT INTO `tb_user`(`login_name`,`user_id`,`TYPE`,`passwd`)
VALUES ('name-11',NEXT VALUE FOR MYCATSEQ_USER_ID_SQUE,1,'passwd-A');
INSERT INTO `tb_user`(`login_name`,`user_id`,`TYPE`,`passwd`)
VALUES ('name-12',NEXT VALUE FOR MYCATSEQ_USER_ID_SQUE,1,'passwd-A');
INSERT INTO `tb_user`(`login_name`,`user_id`,`TYPE`,`passwd`)
VALUES ('name-13',NEXT VALUE FOR MYCATSEQ_USER_ID_SQUE,1,'passwd-A');
INSERT INTO `tb_user`(`login_name`,`user_id`,`TYPE`,`passwd`)
VALUES ('name-14',NEXT VALUE FOR MYCATSEQ_USER_ID_SQUE,1,'passwd-A');
INSERT INTO `tb_user`(`login_name`,`user_id`,`TYPE`,`passwd`)
VALUES ('name-15',NEXT VALUE FOR MYCATSEQ_USER_ID_SQUE,1,'passwd-A');
INSERT INTO `tb_user`(`login_name`,`user_id`,`TYPE`,`passwd`)
VALUES ('name-16',NEXT VALUE FOR MYCATSEQ_USER_ID_SQUE,1,'passwd-A');
INSERT INTO `tb_user`(`login_name`,`user_id`,`TYPE`,`passwd`)
VALUES ('name-17',NEXT VALUE FOR MYCATSEQ_USER_ID_SQUE,1,'passwd-A');
INSERT INTO `tb_user`(`login_name`,`user_id`,`TYPE`,`passwd`)
VALUES ('name-18',NEXT VALUE FOR MYCATSEQ_USER_ID_SQUE,1,'passwd-A');
INSERT INTO `tb_user`(`login_name`,`user_id`,`TYPE`,`passwd`)
VALUES ('name-19',NEXT VALUE FOR MYCATSEQ_USER_ID_SQUE,1,'passwd-A');
INSERT INTO `tb_user`(`login_name`,`user_id`,`TYPE`,`passwd`)
VALUES ('name-20',NEXT VALUE FOR MYCATSEQ_USER_ID_SQUE,1,'passwd-A');
INSERT INTO `tb_user`(`login_name`,`user_id`,`TYPE`,`passwd`)
VALUES ('name-21',NEXT VALUE FOR MYCATSEQ_USER_ID_SQUE,1,'passwd-A');
INSERT INTO `tb_user`(`login_name`,`user_id`,`TYPE`,`passwd`)
VALUES ('name-22',NEXT VALUE FOR MYCATSEQ_USER_ID_SQUE,1,'passwd-A');
INSERT INTO `tb_user`(`login_name`,`user_id`,`TYPE`,`passwd`)
VALUES ('name-23',NEXT VALUE FOR MYCATSEQ_USER_ID_SQUE,1,'passwd-A');
109.128資料為:
mysql> select * from tb_user;
+------------+---------+------+----------------------+
| login_name | user_id | TYPE | passwd |
+------------+---------+------+----------------------+
| name-1 | 225 | 1 | passwd-A |
| name-4 | 228 | 1 | passwd-A |
| name-7 | 231 | 1 | passwd-A |
| name-10 | 234 | 1 | passwd-A |
| name-13 | 237 | 1 | passwd-A |
| name-16 | 240 | 1 | passwd-A |
| name-19 | 243 | 1 | passwd-A |
| name-22 | 246 | 1 | passwd-A |
+------------+---------+------+----------+
8 rows in set (0.00 sec)
109.131資料為:
mysql> select * from tb_user;
+------------+---------+------+----------+
| login_name | user_id | TYPE | passwd |
+------------+---------+------+----------+
| name-2 | 226 | 1 | passwd-A |
| name-5 | 229 | 1 | passwd-A |
| name-8 | 232 | 1 | passwd-A |
| name-11 | 235 | 1 | passwd-A |
| name-14 | 238 | 1 | passwd-A |
| name-17 | 241 | 1 | passwd-A |
| name-20 | 244 | 1 | passwd-A |
| name-23 | 247 | 1 | passwd-A |
+------------+---------+------+----------+
8 rows in set (0.00 sec)
109.132 資料為:
mysql> select * from tb_user;
+------------+---------+------+----------+
| login_name | user_id | TYPE | passwd |
+------------+---------+------+----------+
| name-3 | 227 | 1 | passwd-A |
| name-6 | 230 | 1 | passwd-A |
| name-9 | 233 | 1 | passwd-A |
| name-12 | 236 | 1 | passwd-A |
| name-15 | 239 | 1 | passwd-A |
| name-18 | 242 | 1 | passwd-A |
| name-21 | 245 | 1 | passwd-A |
+------------+---------+------+----------+
7 rows in set (0.00 sec)
通過資料的id取模,取模為0的在109.128 機器,取模為1的在109.131機器,取模為2的在109.132機器。
7.2 下單測試
上面建立的是商家使用者,下面建立買家使用者。
INSERT INTO `tb_user`(`login_name`,`user_id`,`TYPE`,`passwd`)
VALUES ('buyer-1',NEXT VALUE FOR MYCATSEQ_USER_ID_SQUE,2,'passwd-A');
INSERT INTO `tb_user`(`login_name`,`user_id`,`TYPE`,`passwd`)
VALUES ('buyer-2',NEXT VALUE FOR MYCATSEQ_USER_ID_SQUE,2,'passwd-A');
INSERT INTO `tb_user`(`login_name`,`user_id`,`TYPE`,`passwd`)
VALUES ('buyer-3',NEXT VALUE FOR MYCATSEQ_USER_ID_SQUE,2,'passwd-A');
所有的使用者如下:
mysql> select * from tb_user order by login_name;
+------------+---------+------+----------+
| login_name | user_id | TYPE | passwd |
+------------+---------+------+----------+
| buyer-1 | 248 | 2 | passwd-A |
| buyer-2 | 249 | 2 | passwd-A |
| buyer-3 | 250 | 2 | passwd-A |
| name-1 | 225 | 1 | passwd-A |
| name-10 | 234 | 1 | passwd-A |
| name-11 | 235 | 1 | passwd-A |
| name-12 | 236 | 1 | passwd-A |
| name-13 | 237 | 1 | passwd-A |
| name-14 | 238 | 1 | passwd-A |
| name-15 | 239 | 1 | passwd-A |
| name-16 | 240 | 1 | passwd-A |
| name-17 | 241 | 1 | passwd-A |
| name-18 | 242 | 1 | passwd-A |
| name-19 | 243 | 1 | passwd-A |
| name-2 | 226 | 1 | passwd-A |
| name-20 | 244 | 1 | passwd-A |
| name-21 | 245 | 1 | passwd-A |
| name-22 | 246 | 1 | passwd-A |
| name-23 | 247 | 1 | passwd-A |
| name-3 | 227 | 1 | passwd-A |
| name-4 | 228 | 1 | passwd-A |
| name-5 | 229 | 1 | passwd-A |
| name-6 | 230 | 1 | passwd-A |
| name-7 | 231 | 1 | passwd-A |
| name-8 | 232 | 1 | passwd-A |
| name-9 | 233 | 1 | passwd-A |
+------------+---------+------+----------+
下單:
SELECT NEXT VALUE FOR MYCATSEQ_ORDER_ID_SQUE;
INSERT INTO `tb_seller_order`(`seller_user_id`,`buyer_user_id`,`order_id`,`price`)
VALUES (225,248,201,1222);
INSERT INTO `tb_order_detail`
(`seller_user_id`,`order_detail_id`,`order_id`,`goods_id`,`goods_name`,`cnt`,`unit_price`)
VALUES (225, NEXT VALUE FOR MYCATSEQ_DETAIL_ID_SQUE,201,11,'goods_name',1,1220);
INSERT INTO `tb_order_detail`
(`seller_user_id`,`order_detail_id`,`order_id`,`goods_id`,`goods_name`,`cnt`,`unit_price`)
VALUES (225, NEXT VALUE FOR MYCATSEQ_DETAIL_ID_SQUE,201,11,'goods_name2',1,2);
說明:商家225 在109.128 上,tb_seller_order表根據seller_user_id 取模分片,所有此訂單資料儲存在與user id為225 的商家同一分片
tb_order_detail 表使用的是與tb_seller_order ER 分片,使用order_id 關聯,所以tb_order_detail 儲存的分片與相同的order_id 的tb_seller_order 的資料在同一分片。
再測試一條資料:user_id為238 的使用者儲存在109.131 分片上。
INSERT INTO `tb_seller_order`(`seller_user_id`,`buyer_user_id`,`order_id`,`price`)
VALUES (238,248,203,1222);
INSERT INTO `tb_order_detail`
(`seller_user_id`,`order_detail_id`,`order_id`,`goods_id`,`goods_name`,`cnt`,`unit_price`)
VALUES (238, NEXT VALUE FOR MYCATSEQ_DETAIL_ID_SQUE,203,11,'goods_name',1,1220);
INSERT INTO `tb_order_detail`
(`seller_user_id`,`order_detail_id`,`order_id`,`goods_id`,`goods_name`,`cnt`,`unit_price`)
VALUES (238, NEXT VALUE FOR MYCATSEQ_DETAIL_ID_SQUE,203,11,'goods_name2',1,2);
測試結果:
109.128資料為:
mysql> select * from tb_user;
+------------+---------+------+----------+
| login_name | user_id | TYPE | passwd |
+------------+---------+------+----------+
| name-1 | 225 | 1 | passwd-A |
| name-4 | 228 | 1 | passwd-A |
| name-7 | 231 | 1 | passwd-A |
| name-10 | 234 | 1 | passwd-A |
| name-13 | 237 | 1 | passwd-A |
| name-16 | 240 | 1 | passwd-A |
| name-19 | 243 | 1 | passwd-A |
| name-22 | 246 | 1 | passwd-A |
| buyer-2 | 249 | 2 | passwd-A |
+------------+---------+------+----------+
9 rows in set (0.00 sec)
mysql> select * from tb_seller_order;
+----------------+---------------+----------+-------+--------+
| seller_user_id | buyer_user_id | order_id | price | STATUS |
+----------------+---------------+----------+-------+--------+
| 225 | 248 | 201 | 1222 | NULL |
+----------------+---------------+----------+-------+--------+
1 row in set (0.00 sec)
mysql> select * from tb_order_detail;
+----------------+-----------------+----------+----------+-------------+------+------------+
| seller_user_id | order_detail_id | order_id | goods_id | goods_name | cnt | unit_price |
+----------------+-----------------+----------+----------+-------------+------+------------+
| 225 | 201 | 201 | 11 | goods_name | 1 | 1220 |
| 225 | 202 | 201 | 11 | goods_name2 | 1 | 2 |
+----------------+-----------------+----------+----------+-------------+------+------------+
2 rows in set (0.00 sec)
109.131資料為:
mysql> select * from tb_user;
+------------+---------+------+----------+
| login_name | user_id | TYPE | passwd |
+------------+---------+------+----------+
| name-2 | 226 | 1 | passwd-A |
| name-5 | 229 | 1 | passwd-A |
| name-8 | 232 | 1 | passwd-A |
| name-11 | 235 | 1 | passwd-A |
| name-14 | 238 | 1 | passwd-A |
| name-17 | 241 | 1 | passwd-A |
| name-20 | 244 | 1 | passwd-A |
| name-23 | 247 | 1 | passwd-A |
| buyer-3 | 250 | 2 | passwd-A |
+------------+---------+------+----------+
9 rows in set (0.00 sec)
mysql> select * from tb_seller_order;
+----------------+---------------+----------+-------+--------+
| seller_user_id | buyer_user_id | order_id | price | STATUS |
+----------------+---------------+----------+-------+--------+
| 238 | 248 | 203 | 1222 | NULL |
+----------------+---------------+----------+-------+--------+
1 row in set (0.00 sec)
mysql> select * from tb_order_detail;
+----------------+-----------------+----------+----------+-------------+------+------------+
| seller_user_id | order_detail_id | order_id | goods_id | goods_name | cnt | unit_price |
+----------------+-----------------+----------+----------+-------------+------+------------+
| 238 | 203 | 203 | 11 | goods_name | 1 | 1220 |
| 238 | 204 | 203 | 11 | goods_name2 | 1 | 2 |
+----------------+-----------------+----------+----------+-------------+------+------------+
2 rows in set (0.00 sec)
本想寫儲存過程測試,發現儲存過程只能寫的某一個結點,然後通過mycat指定結點呼叫,這樣就不能使用mycat的全域性序列,所以就手動寫了sql。
相關推薦
mycat 取模分片,ER分片
1、業務場景:使用者購物下單。 要求:把訂單分片,商家要查詢購買在訂單,使用者要查詢自己的訂單。 表設計:使用者,商家訂單,訂單明細,買方訂單 分片規則: “使用者表”---user_id 取模,“商家訂單”----seller_user_id 取模 “訂單明細”-
MyCat分片規則(全域性表,ER分片表,多對多關聯,主鍵分片VS非主鍵分片),MyCat常用的分片規則(15中分片規則),自定義MyCat分片規則
1 MyCat分片規則 資料切分中重要的幾條原則,其中有幾條資料冗餘,表分組(Table Group)。 1.1全域性表 如果你的業務中有些資料類似於資料字典,比如配置檔案的配置,常用業務的配置或資料量不是很大,很少變動的表,這些表往往不是特別大,而且大部分的業務場景都
memcache通過hash取模演算法,實現多伺服器存取值
<?php //封裝一個hash演算法類 class Mem{ //儲存memcache的伺服器個數 private $hostCount=''; //多個伺服器 private $host=[]; //構造方法用來給接收值,給屬性賦值 publi
給定A, B兩個整數,不使用除法和取模運算,求A/B的商和餘數
第一種辦法: 從小到大遍歷 for(i = 2 to A - 1) if(i * B > A) 商 = i- 1, 餘 = A - (i -1) * B 第二種辦法 二分法,在[2, A]中查詢滿足的解 第三種辦法 以除數為初始測試值,以2的指數
大數取模運算,快速冪取模運算
1.快速冪取模 快速冪取模就是在O(logn)內求出a^n mod b的值。演算法的原理是ab mod c=(a mod c)(b mod c)mod c long exp_mod(long a,long n,long b) { long t; if
mycat ER關係 取模分片試驗
Mycat 商品表ER分片 1. 業務場景 使用者查詢商品資訊 要求:把商品表以及子表均勻分片 分片規則: 商品表commodity --- 根據commodity_id取模 2. 表 主表
Mycat之資料庫分片(取模分片)-yellowcong
取模分片,簡單來講,根據資料庫的主鍵和儲存的節點數進行取模操作,然後根據取模的結果,將資料存放到對應的節點中,取模分表,可以將資料均勻的分配到各個庫中。實現的步驟:1、建立資料庫,2、配置schema.xml檔案,3、配置server.xml,4、新增ru
mycat讀寫分離+垂直切分+水平切分+er分片+全局表 測試
mysql cal style st2 create 提交 org 方法 一起 原文http://blog.163.com/[email protected]/blog/static/172718064201683031639683/ 讀寫分離:利用最基礎的m
linux中mycat的配置,分片,以及主從復制
chan 命令 star ice limit 第一步 execute ado master 1.1 安裝環境 1、jdk:要求jdk必須是1.7及以上版本 2、Mysql:推薦mysql是5.5以上版本 1.2 安裝步驟 Mycat有windows、linux多種版
mycat1.6.5分片(取模)
mycat one群:106088787。 說明:根據分片欄位取模。 一、conf/schema.xml檔案 <?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat
Mycat之——讀寫分離+垂直切分+水平切分+er分片+全域性表 測試
今天,給大家帶來一篇基於Mycat的讀寫分離+垂直切分+水平切分+er分片+全域性表 測試 ,我們直接進入主題 一、垂直切分測試 1、schema.xml裡面加入 <schema name="weixin" checkSQLschema="false" sqlM
mycat高可用 ER分片的2種場景詳細分析
1,ER分片關係簡介 有一類業務,例如訂單(ORDER)跟訂單明細表(ORDER_DETAIL),明細表會依賴二訂單,就是該會存在表的主從關係,這類似業務的切分可以抽象出合適的切分規則,比如根據使用者ID切分,其它相關的表都依賴於使用者ID,再或者根據訂單ID
求第n行楊輝三角(n很大,取模
int 為什麽不能 style code 為我 max sin clas pan 1 #include <iostream> 2 #include <cstdio> 3 4 using namespace std; 5 typedef
mycat分片規則之分片枚舉(sharding-by-intinfile)
別人 ade 員工信息 cat oracle server register 正常 cor 剛開始看教程資料的時候,看教程文檔感覺模糊,完全沒明白分片枚舉是個什麽樣的概念。於是網上搜素別人做的 案例來看,終於讓我搜索到一份完整的測試案例,見如下地址: https://w
cf166e 在四面體上尋找路線數 遞推,取模
lac cti limit self pie code pri esp AD 來源:codeforces E. Tetrahedron You are given a tetrahedron. Let‘s mark it
快速冪取模(當數很大時,相乘long long也會超出的解決辦法)
結合 超出 但是 long 數字 也會 連續 return result 當幾個數連續乘最後取模時,可以將每個數字先取模,最後再取模,即%對於*具有結合律。但是如果當用來取模的數本身就很大,采取上述方法就不行了。這個時候可以借鑒快速冪取模的方法,來達到大數相乘取模的效果。
2018牛客多校第九場E(動態規劃,思維,取模)
pac namespace for ons mod 思維 space scan 動態規劃 #include<bits/stdc++.h>using namespace std;const long long mod=1000000007,inv=57000000
牛客小白月賽9 A簽到(分數取模,逆元)
傳送門 對分母求一下逆元,把除法取模變成乘法取模,逆元介紹看這裡 這種方法只適合模為質數的情況 1 #include<bits/stdc++.h> 2 using namespace std; 3 const long long mod=1e9+7; 4
HDU——1852 Beijing 2008(除法取模,不能取逆元)
As we all know, the next Olympic Games will be held in Beijing in 2008. So the year 2008 seems a little special somehow. You are looking forward to it
python中的列表,新增元素,獲取元素,刪除元素,列表分片,常用操作符
一. 建立列表,分為建立普通列表,混合列表,和空列表。其中混合列表是指string,int, float等都可以寫在同一個列表裡,空列表是指列表可以為空 二. 在列表新增成員方法