欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySql中數(shù)據(jù)表增加字段很慢問(wèn)題及解決

 更新時(shí)間:2024年04月11日 09:16:07   作者:獅子君的石榴  
這篇文章主要介紹了MySql中數(shù)據(jù)表增加字段很慢問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

MySql數(shù)據(jù)表增加字段很慢

由于數(shù)據(jù)庫(kù)表中有大量數(shù)據(jù),導(dǎo)致給表添加字段就會(huì)很慢。

所以,對(duì)于數(shù)據(jù)量很大的表,需要添加所有或者修改字段的做法是如下:

1.先創(chuàng)建一張一樣的表

create table new_tb like tb_old;

2.修改創(chuàng)建表的字段

alter table new_tb add COLUMN new_column varchar(32) DEFAULT null;

3.原始數(shù)據(jù)插入到新的數(shù)據(jù)表中

insert into new_tb (字段) select 字段 from tb_old;

這里需要注意下,你的insert字段和你查詢(xún)出來(lái)的字段一致,對(duì)應(yīng)順序也是需要一致的,如果你只是修改字段的屬性,或者添加了索引之類(lèi)的,字段數(shù)量沒(méi)用變?cè)?,那么直接這樣寫(xiě)

insert into new_tb select * from tb_old;

4.刪除原來(lái)的數(shù)據(jù)表,并且重新命名新的數(shù)據(jù)表:

drop table tb_old;
alter table new_tb rename to tb_old;

MySql大表加字段問(wèn)題

場(chǎng)景

現(xiàn)在 有個(gè)數(shù)據(jù)量大概40億的數(shù)據(jù),存在10個(gè)庫(kù),總計(jì)80張表上面,每個(gè)表大概5000萬(wàn)的數(shù)據(jù)量,

這個(gè)表通過(guò)一個(gè)MQ接口不斷地接收數(shù)據(jù),每天大概新增或更新數(shù)據(jù)量是幾十萬(wàn)。

現(xiàn)在,需要在在這個(gè)表上加個(gè)新字段X,而且都有初始值,都存儲(chǔ)在對(duì)方系統(tǒng)的數(shù)據(jù)庫(kù)里。而他們這個(gè)新的字段一直就有。只是我方系統(tǒng)一直以來(lái)沒(méi)有接這個(gè)字段。

注意:加字段期間不能影響原有的查這張表的業(yè)務(wù)的使用。

問(wèn):如何新增。

首先,肯定不能在表上面直接加字段,數(shù)據(jù)量太大,直接加字段,sql一夜都跑不完。而且會(huì)影響查詢(xún)業(yè)務(wù)的使用

方案如下

  • 第一步,我們同樣的數(shù)據(jù)庫(kù)的位置,在老表的_old下方創(chuàng)建新表_new ,字段結(jié)構(gòu)完全一樣,只是多了新字段X。
  • 第二步,讓對(duì)方系統(tǒng)把老的40億數(shù)據(jù)推到hive上面,做準(zhǔn)備,時(shí)間節(jié)點(diǎn)記為1月1日零時(shí),大概三天推上去;
  • 第三步,在此之前,建立一個(gè)新接口,一個(gè)臨時(shí)表new_temporary從1月1日零時(shí),就開(kāi)始接數(shù)據(jù)到臨時(shí)表;
  • 第四部,啟動(dòng)拉數(shù)據(jù)任務(wù)流,每天半夜從hive拉數(shù)據(jù),拉倒新表new,拉的時(shí)候記得max_binlog_cache_size 改大,不然一次入庫(kù)會(huì)撐爆,大概10天左右拉完,截止時(shí)間1月15日零時(shí)。(這個(gè)時(shí)間節(jié)點(diǎn)要用)
  • 第五步,拉數(shù)據(jù)完畢后,啟動(dòng)一個(gè)定時(shí)任務(wù),把從臨時(shí)表new_temporary接收的數(shù)據(jù),更新到新表_new。更新條件是,只對(duì)數(shù)據(jù)庫(kù)更新時(shí)間是 1月15日零時(shí)之前的數(shù)據(jù)做更新
  • 第六步,同時(shí)切換接口開(kāi)關(guān),關(guān)閉接臨時(shí)表的接口,打開(kāi)接新表接入數(shù)據(jù)的接口。同時(shí)入老表old的接口也不能關(guān),預(yù)防漏發(fā)數(shù)據(jù)隨時(shí)切回來(lái)。
  • 第七步,修改系統(tǒng)中所有查詢(xún)老表old查詢(xún)方法,改成查詢(xún)新表,用redis加上開(kāi)關(guān)。上線功能。
  • 第八步,打開(kāi)開(kāi)關(guān),使用新表,若有漏發(fā)數(shù)據(jù)(少量),這提醒對(duì)方系統(tǒng)補(bǔ)發(fā)數(shù)據(jù),逐步補(bǔ)全數(shù)據(jù),
  • 第九步,等系統(tǒng)運(yùn)行平穩(wěn)以后,關(guān)掉接老表old數(shù)據(jù)的接口,刪除臨時(shí)表new_temporary,刪除老表_old

感悟:

本來(lái)加一個(gè)字段不算太大的事,可是因?yàn)閿?shù)據(jù)量大,又要保證可用性,所以還是需要一套方案來(lái)做這個(gè)事情。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Hibernate4在MySQL5.1以上版本創(chuàng)建表出錯(cuò) type=InnDB

    Hibernate4在MySQL5.1以上版本創(chuàng)建表出錯(cuò) type=InnDB

    本文主要介紹解決Hibernate4在MySQL5.1自動(dòng)創(chuàng)建表出錯(cuò)的方法,簡(jiǎn)單實(shí)用,需要的朋友可以參考下。
    2016-05-05
  • Linux下mysql 8.0.25 安裝配置方法圖文教程

    Linux下mysql 8.0.25 安裝配置方法圖文教程

    這篇文章主要為大家詳細(xì)介紹了Linux下mysql 8.0.25 安裝配置方法圖文教程,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 解決MySQL5.7安裝后沒(méi)有data文件夾無(wú)法登錄的問(wèn)題

    解決MySQL5.7安裝后沒(méi)有data文件夾無(wú)法登錄的問(wèn)題

    這篇文章主要介紹了解決MySQL5.7安裝后沒(méi)有data文件夾無(wú)法登錄的問(wèn)題,需要的朋友可以參考下
    2016-04-04
  • 詳解MySQL中的事務(wù)與ACID特性

    詳解MySQL中的事務(wù)與ACID特性

    這篇文章主要為大家介紹了Mysql?中的事務(wù),包括事務(wù)的基本概念和?ACID?特性、事務(wù)的隔離級(jí)別和具體實(shí)現(xiàn)方法等,并提供相應(yīng)的代碼示例,希望對(duì)大家有所幫助
    2023-05-05
  • MySQL Workbench安裝及使用詳解

    MySQL Workbench安裝及使用詳解

    MySQL是一種關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),關(guān)系數(shù)據(jù)庫(kù)將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個(gè)大倉(cāng)庫(kù)內(nèi),這樣就增加了速度并提高了靈活性,這篇文章主要介紹了MySQL Workbench安裝及使用,需要的朋友可以參考下
    2022-10-10
  • MySQL中的自定義函數(shù)(CREATE FUNCTION)

    MySQL中的自定義函數(shù)(CREATE FUNCTION)

    這篇文章主要介紹了MySQL中的自定義函數(shù)(CREATE FUNCTION),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • MySql中使用正則表達(dá)式查詢(xún)的方法

    MySql中使用正則表達(dá)式查詢(xún)的方法

    Mysql 使用 REGEXP 關(guān)鍵字指定正則表達(dá)式的字符匹配模式。接下來(lái)通過(guò)本文給大家分享MySql中使用正則表達(dá)式查詢(xún)的方法,感興趣的朋友一起看看吧
    2017-07-07
  • explain分析sql效率的方法

    explain分析sql效率的方法

    下面小編就為大家?guī)?lái)一篇explain分析sql效率的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • MySQL聯(lián)合查詢(xún)實(shí)現(xiàn)方法詳解

    MySQL聯(lián)合查詢(xún)實(shí)現(xiàn)方法詳解

    聯(lián)合查詢(xún)union將多次查詢(xún)(多條select語(yǔ)句)的結(jié)果,在字段數(shù)相同的情況下,在記錄的層次上進(jìn)行拼接,這篇文章主要給大家介紹了關(guān)于Mysql聯(lián)合查詢(xún)的那些事兒,需要的朋友可以參考下
    2022-11-11
  • sysbench的安裝與使用 分享

    sysbench的安裝與使用 分享

    sysbench是一款開(kāi)源的多線程性能測(cè)試工具,可以執(zhí)行CPU/內(nèi)存/線程/IO/數(shù)據(jù)庫(kù)等方面的性能測(cè)試。數(shù)據(jù)庫(kù)目前支持MySQL/Oracle/PostgreSQL
    2013-09-09

最新評(píng)論