国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

mysql自增id超大問題的排查與解決

2024-07-24 12:49:32
字體:
供稿:網(wǎng)友

引言

小A正在balabala寫代碼呢,DBA小B突然發(fā)來了一條消息,“快看看你的用戶特定信息表T,里面的主鍵,也就是自增id,都到16億了,這才多久,在這樣下去過不了多久主鍵就要超出范圍了,插入就會失敗,balabala......”

我記得沒有這么多,最多1k多萬,count了下,果然是1100萬。原來運(yùn)維是通過auto_increment那個值看的,就是說,表中有大量的刪除插入操作,但是我大部分情況都是更新的,怎么會這樣?

下面話不多說了,來一起看看詳細(xì)的介紹吧

問題排查

這張表是一個簡單的接口服務(wù)在使用,每天大數(shù)據(jù)會統(tǒng)計(jì)一大批信息,然后推送給小A,小A將信息更新到數(shù)據(jù)庫中,如果是新數(shù)據(jù)就插入,舊數(shù)據(jù)就更新之前的數(shù)據(jù),對外接口就只有查詢了。

很快,小A就排查了一遍自己的代碼,沒有刪除的地方,也沒有主動插入、更新id的地方,怎么會這樣呢?難道是小B的原因,也不太可能,DBA那邊兒管理很多表,有問題的話早爆出來了,但問題在我這里哪里也沒頭緒。

小A又仔細(xì)觀察了這1000多萬已有的數(shù)據(jù),將插入時(shí)間、id作為主要觀察字段,很快,發(fā)現(xiàn)了個問題,每天第一條插入的數(shù)據(jù)總是比前一天多1000多萬,有時(shí)候遞增的多,有時(shí)候遞增的少,小A又將矛頭指向了DBA小B,將問題又給小B描述了一遍。

小B問了小A,“你是是不是用了REPLACE INTO ...語句”,這是怎么回事呢,原來REPLACE INTO ...會對主鍵有影響。

REPLACE INTO ...對主鍵的影響

假設(shè)有一張表t1:

CREATE TABLE `t1` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID,自增',`uid` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '用戶uid',`name` varchar(20) NOT NULL DEFAULT '' COMMENT '用戶昵稱',PRIMARY KEY (`id`),UNIQUE KEY `u_idx_uid` (`uid`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='測試replace into';

如果新建這張表,執(zhí)行下面的語句,最后的數(shù)據(jù)記錄如何呢?

insert into t1 values(NULL, 100, "test1"),(NULL, 101, "test2");replace into t1 values(NULL, 100, "test3");

原來,REPLACE INTO ...每次插入的時(shí)候如果唯一索引對應(yīng)的數(shù)據(jù)已經(jīng)存在,會刪除原數(shù)據(jù),然后重新插入新的數(shù)據(jù),這也就導(dǎo)致id會增大,但實(shí)際預(yù)期可能是更新那條數(shù)據(jù)。

小A說:“我知道replace是這樣,所有既沒有用它”,但還是又排查了一遍,確實(shí)不是自己的問題,沒有使用REPLACE INTO ...,

小A又雙叒叕仔細(xì)的排查了一遍,還是沒發(fā)現(xiàn)問題,就讓小B查下binlog日志,看看是不是有什么奇怪的地方,查了之后還是沒發(fā)現(xiàn)問題,確實(shí)存在跳躍的情況,但并沒有實(shí)質(zhì)性的問題。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 舞钢市| 镇平县| 芜湖市| 广元市| 太湖县| 四川省| 南宫市| 团风县| 五大连池市| 宣化县| 昌乐县| 华坪县| 安塞县| 金塔县| 兰坪| 五家渠市| 永平县| 蓬莱市| 五峰| 祁门县| 萨迦县| 佛山市| 乐安县| 攀枝花市| 扎赉特旗| 措美县| 永仁县| 昌吉市| 洛隆县| 定州市| 永善县| 松江区| 蛟河市| 台安县| 苗栗县| 徐闻县| 中卫市| 乌拉特后旗| 田林县| 濮阳县| 上林县|