MyCat插入數(shù)據(jù)mycat_sequence中current_value沒有遞增

mycat踩坑記,一次生產(chǎn)bug

【心中一萬的羊駝...】

進(jìn)入正題。

環(huán)境

  • MyCat 版本:V1.6
  • MyCat SEQ配置:sequnceHandlerType=1,sequence表DDL是
CREATE TABLE `mycat_sequence` (
  `name` varchar(50) NOT NULL,
  `current_value` bigint(20) NOT NULL,
  `increment` int(11) NOT NULL DEFAULT '1',
  PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
  • MyCat 配置表 tab 自增主鍵: schema.xml 配置
<table name="tab" primaryKey="id" autoIncrement="true" dataNode="dn8"/>

插入 mycat_sequence 數(shù)據(jù),步長 increment=10

INSERT INTO mycat_sequence (name, current_value, `increment`)
VALUES('TAB', 1, 10);

問題描述

Spark任務(wù)通過JDBC連接MyCat,發(fā)送insert into tab xxx初始化一些數(shù)據(jù)。

MyCat配置了表tab自增主鍵,使用insert into tab xxx插入數(shù)據(jù),如果sql中沒有指定PK,MyCat應(yīng)該會自己拼裝上PK字段和值,然后將拼裝后的sql發(fā)送到MySQL上去執(zhí)行。

但是Spark初始化完成數(shù)據(jù)后,MySQL中已經(jīng)增加了110w+的數(shù)據(jù),mycat_sequence中tab1表的current_value是21。說明MyCat沒有組裝ID到insert語句中。

************************* 省略排查過程,直接上結(jié)論 *************************

總結(jié)

1、MyCat通過配置 primaryKey="id" autoIncrement="true" 來開啟自增主鍵

2、MyCat獲取PK值,先從自己的SEQ緩存中取,如果緩存中沒有,就去 mycat_sequence 中獲取,每次獲取increment個數(shù)值放入緩存,同時更新 current_value=current_value+increment。

3、客戶端發(fā)送到MyCat的 insert into tab(xx) value(xx) 中如果沒有包含主鍵ID,MyCat會自動拼裝上ID,將拼裝后的SQL insert into tab(xx, ID) value(xx, 12) 發(fā)送到MySQL上執(zhí)行。

關(guān)鍵來了:MyCat向insert拼裝ID,不識別insert ignore into,如過客戶端發(fā)送到MyCat的insert帶有ignore,MyCat直接將SQL發(fā)送到MySQL

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Mycat入門 轉(zhuǎn)載自https://chenjiabing666.github.io/2018/10/07/My...
    愛撒謊的男孩閱讀 1,936評論 0 1
  • mycat是什么---作用:java應(yīng)用程序與數(shù)據(jù)庫緊耦合-----解耦application和db高訪問量高并發(fā)...
    ___Kevin閱讀 631評論 0 0
  • 基于 Mycat 1.6.7.3 版本 為什么要分庫分表 1、數(shù)據(jù)庫性能瓶頸的出現(xiàn)1)對于應(yīng)用來說,如果數(shù)據(jù)庫性能...
    vincent浩哥閱讀 1,076評論 0 0
  • NoSQL 根本性的優(yōu)勢在于在云計算時代,簡單、易于大規(guī)模分布式擴(kuò)展,并且讀寫性能非常高 關(guān)系型數(shù)據(jù)庫NoSQL ...
    Q南南南Q閱讀 644評論 0 7
  • 第 第1 章 數(shù)據(jù)庫章節(jié)1.1 選擇1.1.1 Having 子句的作用是(C) 。A.查詢結(jié)果的分組條件 B.組...
    亮仔_c1b5閱讀 1,943評論 0 0

友情鏈接更多精彩內(nèi)容