最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL 線上數(shù)據(jù)庫清理數(shù)據(jù)的方法

 更新時間:2021年03月30日 10:52:54   作者:AsiaYe  
這篇文章主要介紹了MySQL 線上數(shù)據(jù)庫清理數(shù)據(jù)的方法,幫助大家更好的理解和學(xué)習(xí)使用MySQL,感興趣的朋友可以了解下

01 場景分析

 今天下午,開發(fā)的同事提來一個需求,需要在線上要刪除一些數(shù)據(jù)記錄,簡單看了看數(shù)據(jù)的分布,大概是要刪除數(shù)據(jù)表中的兩千七百多萬條記錄,數(shù)據(jù)表的總記錄是兩千八百多萬,也就是說,要刪除的記錄占了總記錄的絕大部分比重,兩千七百多萬的數(shù)據(jù)記錄,要是刪除的話,使用的時間是相當(dāng)長的,對線上的業(yè)務(wù)肯定會造成影響。這里將實際的應(yīng)用案例簡單重構(gòu)為以下方法:

mysql> select date,count(*) from test.tbl_a  group by date;
+----------+----------+
|   date | count(*) |
+----------+----------+
| |  63103 |
| 20190118 | |
| |  125916 |
| 20190120 |   |
| |  129198 |
| 20190122 |  |
| | 5191247 |
+----------+----------+
 rows in set (13.21 sec)

上面就是重構(gòu)之后的表的結(jié)構(gòu),我們可以看到,test數(shù)據(jù)庫中的表tbl_b按照date分組之后,每個組的數(shù)據(jù)量都不小,而我們的需求是將date為20190118和20190123的記錄刪除,可以看到這兩種記錄總計有兩千多萬條,占了表中數(shù)據(jù)的絕大部分,如果直接刪除的話,線上的業(yè)務(wù)肯定會受到阻塞。

以下是操作方法,需要注意的是,應(yīng)用下面的操作方法的前提是:

要刪除的數(shù)據(jù)占了數(shù)據(jù)表中的絕大部分。

02 操作辦法

 通過分析,知道剩余的表數(shù)據(jù)對于全表來說是很小的一部分,這個操作我們分為4步:

1.我們先把剩余的數(shù)據(jù)存入到另外一個數(shù)據(jù)庫test1中:

create table test1.tbl_b_new as 
select * from test.tbl_b 
where date in(,,,,);

這個操作的時間只有3s左右;

2.我們在test1數(shù)據(jù)庫中創(chuàng)建一個同名的表tbl_b,它的結(jié)構(gòu)和test數(shù)據(jù)庫中的tbl_b數(shù)據(jù)結(jié)構(gòu)一致:

create table test1.tbl_b like test.tbl_b;

3.緊接著,我們使用數(shù)據(jù)庫中的rename操作將表test中的表tbl_b和test1中的表tbl_b進行交換,等價于將test數(shù)據(jù)庫中的表所有數(shù)據(jù)清除。

RENAME TABLE test.tbl_b  TO test1.tbl_b_bak,
         test1.tbl_b  TO test.tbl_b,
         test1.tbl_b_bak TO test1.tbl_b;

4.再講第一步保存的剩余數(shù)據(jù)填充到新表中來,如下:

insert into test.tbl_b select * from  test1.tbl_b_new;

03 結(jié)果分析

 看上去我們好像把問題搞復(fù)雜了,直接刪除的事情,被我們搞的多了好幾個步驟,但是實際上不是這樣的,這一套操作可以幫我們節(jié)省好幾分鐘時間,對線上業(yè)務(wù)的影響也更小,原因如下:

  1. 我們使用create table as的方法創(chuàng)建剩余的數(shù)據(jù)表,這種方法使我們僅對數(shù)據(jù)表中的少部分?jǐn)?shù)據(jù)進行了操作。避免了我們對過多的數(shù)據(jù)進行掃描。
  2. mysql中對大表進行rename的操作,rename命令會直接修改底層的.frm文件,所以它的速度是相當(dāng)之快的。

   第二個特點給我們提供了一種思路,在一個很著急的業(yè)務(wù)中,要使用一個表的時候,往往不給我們留充足的時間備份表,如果我們想要刪除一個大表里面的數(shù)據(jù),而且需要進行相關(guān)備份,我們可以通過rename操作迅速處理,然后再想辦法去備份rename之后的表。

    上面的例子中使用create table as 和create table like兩種克隆表的方式,有幾點需要注意:

create table like方式會完整地克隆表結(jié)構(gòu),但不會插入數(shù)據(jù),需要單獨使用insert into或load data方式加載數(shù)據(jù)
create table as  方式會部分克隆表結(jié)構(gòu),完整保留數(shù)據(jù)

    如果有興趣,可以做做試驗進行驗證。

以上就是MySQL 線上數(shù)據(jù)庫清理數(shù)據(jù)的方法的詳細內(nèi)容,更多關(guān)于MySQL 線上數(shù)據(jù)庫清理數(shù)據(jù)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • mysql group_concat 實現(xiàn)把分組字段寫成一行的方法示例

    mysql group_concat 實現(xiàn)把分組字段寫成一行的方法示例

    這篇文章主要介紹了mysql group_concat實現(xiàn)把分組字段寫成一行的方法,結(jié)合實例形式分析了group_concat函數(shù)的功能、查詢用法及相關(guān)操作技巧,需要的朋友可以參考下
    2019-10-10
  • Mysql事務(wù)并發(fā)問題解決方案

    Mysql事務(wù)并發(fā)問題解決方案

    這篇文章主要介紹了Mysql事務(wù)并發(fā)問題解決方案,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09
  • 聊聊MySQL的COUNT(*)的性能

    聊聊MySQL的COUNT(*)的性能

    這篇文章主要介紹了聊聊MySQL的COUNT(*)的性能,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Mysql5.7.11在windows10上的安裝與配置(解壓版)

    Mysql5.7.11在windows10上的安裝與配置(解壓版)

    本文分為三大步給大家介紹Mysql5.7.11解壓版在windows10上的安裝與配置,另外還給大家?guī)砹薽ysql5.7.11服務(wù)無法啟動,錯誤代碼3534的解決方案,非常不錯,有需要的朋友參考下
    2016-08-08
  • openEuler?RPM方式安裝MySQL8的實現(xiàn)

    openEuler?RPM方式安裝MySQL8的實現(xiàn)

    本文主要介紹了openEuler?RPM方式安裝MySQL8的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • MySQL連接無法解析HOST主機名的解決方法

    MySQL連接無法解析HOST主機名的解決方法

    這篇文章主要介紹了MySQL連接無法解析HOST主機名的解決方法,需要的朋友可以參考下
    2014-02-02
  • mysql實現(xiàn)sequence功能的代碼

    mysql實現(xiàn)sequence功能的代碼

    今天小編就為大家分享一篇關(guān)于mysql實現(xiàn)sequence功能的代碼,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • Mysql?DATETIME?毫秒坑的解決

    Mysql?DATETIME?毫秒坑的解決

    本文主要介紹了Mysql?DATETIME?毫秒坑的解決,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • mysql now()函數(shù)調(diào)用系統(tǒng)時間不對的解決方法

    mysql now()函數(shù)調(diào)用系統(tǒng)時間不對的解決方法

    mysql的now()函數(shù)與實際時間不符,本文就詳細的介紹一下mysql now()函數(shù)調(diào)用系統(tǒng)時間不對的解決方法,非常具有實用價值,需要的朋友可以參考下
    2023-05-05
  • MySQL實現(xiàn)模糊查詢的高效方法總結(jié)(附30條優(yōu)化建議)

    MySQL實現(xiàn)模糊查詢的高效方法總結(jié)(附30條優(yōu)化建議)

    數(shù)據(jù)庫SQL優(yōu)化是老生常談的問題,在面對模糊查詢的時候又有什么好的優(yōu)化建議呢?這篇文章主要給大家介紹了關(guān)于MySQL實現(xiàn)模糊查詢的高效方法,文中還附30條優(yōu)化建議,需要的朋友可以參考下
    2024-03-03

最新評論

讷河市| 陈巴尔虎旗| 温泉县| 汉阴县| 罗江县| 门头沟区| 衡阳县| 濉溪县| 华阴市| 高雄县| 安庆市| 孙吴县| 太和县| 滕州市| 慈利县| 济南市| 绍兴县| 邳州市| 黔东| 伊宁市| 赤水市| 齐齐哈尔市| 睢宁县| 东乌| 沂源县| 阿城市| 汉沽区| 布尔津县| 南充市| 浑源县| 巧家县| 涞源县| 长岛县| 乐山市| 塔城市| 昆山市| 奉节县| 鄂尔多斯市| 桃源县| 兰考县| 陆河县|