1. 程式人生 > >mycat 取模分片,ER分片

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等都可以寫在同一個列表裡,空列表是指列表可以為空 二.    在列表新增成員方法