成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

面試官:如果單表數據量過大怎么辦?

數據庫
大部分情況,我們做數據歸檔就足以解決單表數據量過大這個問題。只有那些全部很重要的業務數據,才需要做分庫分表。

要回答這個問題,首先我們要明確這個表的數據是否全部有用?使用MySQL的過程,經常會遇到一個問題,比如說某張”log”表,用于保存某種記錄,隨著時間的不斷的累積數據,但是只有最新的一段時間的數據是有用的;這個時候會遇到性能和容量的瓶頸,需要將表中的歷史數據進行歸檔。

也就是說,大部分情況,我們做數據歸檔就足以解決這個問題。只有那些全部很重要的業務數據,才需要做分庫分表。

利用存儲過程和事件來定期進行數據的導出刪除操作

創建一個新表,表結構和索引與舊表一模一樣:

create table table_new like table_old;

新建存儲過程,查詢30天的數據并歸檔進新數據庫,然后把30天前的舊數據從舊表里刪除:

delimiter $
create procedure sp()
begin
insert into tb_new select * from table_old where rectime < NOW() - INTERVAL 30 DAY;
delete from db_smc.table_old where rectime < NOW() - INTERVAL 30 DAY;
end

創建EVENT,每天晚上凌晨00:00定時執行上面的存儲過程:

create event if not exists event_temp
on schedule every 1 day
on completion preserve
do call sp();

備注:第一次執行存儲過程的時候因為歷史數據過大, 可能發生意外讓該次執行沒有成功。重新執行時會遇到報錯ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction,應急解決方案如下:

  • 執行show full processlist;查看所有MySQL線程。
  • 執行SELECT * FROM information_schema.INNODB_TRX; 查看是否有錯誤線程,即線程id在show full processlist;的結果中,狀態為sleep的線程。
  • kill進程id。

另外寫存儲過程的時候可以控制事務的大小,比如說可以根據時間字段每次歸檔一天或者更小時間段的數據,這樣就不會有大事務的問題,里面還可以加入日志表,每次歸檔操作的行為都寫入日志表,以后查起來也一目了然。

實戰

首先,查看一下哪些表數據量特別大:

SELECT   
    TABLE_NAME AS '表名',  
    TABLE_ROWS AS '記錄數'  
FROM   
    information_schema.TABLES   
WHERE   
    TABLE_SCHEMA = 'tms' and TABLE_ROWS > 1000;  -- 這里替換為你的數據庫名

如圖,我要對原數據庫中的single_packaging表進行歸檔,就先新建一個用于歸檔的數據庫doc_history:

然后建一張一模一樣的表在這個數據庫,編寫歸檔的存儲過程:

delimiter $
create procedure sp()
begin
insert into doc_history.single_packaging select * from old_schema.single_packaging  where create_time < NOW() - INTERVAL 7 DAY;
delete from old_schema.single_packaging where create_time < NOW() - INTERVAL 7 DAY;

end

注意老庫和新庫的區別。

最后,設置事件,每天定時跑:

create event if not exists event_temp
on schedule every 1 day
on completion preserve
do call sp();

這樣就OK了。

責任編輯:趙寧寧 來源: java小白翻身
相關推薦

2024-08-27 11:59:47

2021-06-29 11:05:25

MySQLCPU數據庫

2021-09-06 12:58:26

MQ面試數據庫

2022-06-24 09:22:15

MySQL自增id

2020-03-28 15:50:18

數據庫自增ID維護

2019-03-04 13:54:18

MySQL分區表數據

2019-09-18 15:49:06

MySQL數據庫面試官

2020-08-13 13:41:31

Python數據密度散點圖

2024-09-03 09:20:45

2021-03-01 10:10:39

數據遷移擴容

2022-04-22 10:30:07

框架JavaScript前端

2024-11-26 17:43:51

2020-03-09 15:00:39

MySQLCPU數據庫

2021-11-16 07:02:05

函數Python返回值

2025-03-10 00:28:00

2021-08-02 17:21:08

設計模式訂閱

2021-07-06 07:08:18

管控數據數倉

2021-01-23 23:18:21

Windows 10Windows微軟

2018-09-04 16:01:33

工作挑戰性技術

2022-02-14 15:03:50

MySQL程序員面試
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品午夜电影 | 国产99久久精品 | 人人干人人草 | 久久久噜噜噜久久中文字幕色伊伊 | 欧美亚洲一区二区三区 | 北条麻妃视频在线观看 | 人人玩人人添人人澡欧美 | 国产欧美日韩精品一区 | 91国内产香蕉 | 91精品久久久久久久久久入口 | 一区二区三区免费 | 国产一区二区三区 | 九九精品在线 | 日韩欧美一区在线 | 中文字幕一区二区三区不卡 | 91在线精品秘密一区二区 | 亚洲永久| 午夜影院黄| 欧美日韩精品久久久免费观看 | 成人免费视频播放 | 欧美日韩一区二区三区不卡视频 | 午夜精品一区 | 亚洲福利视频网 | 久久久久国产一区二区三区四区 | 日本成人片在线观看 | 国产特级毛片 | 国产欧美一区二区三区久久 | 欧美精品一区在线 | 日本三级电影在线看 | www.99热这里只有精品 | 天天综合网91 | 国产精品久久久久久久久久 | 精品一区国产 | 97色在线观看免费视频 | 久久精品国产亚洲a | 免费能直接在线观看黄的视频 | 日本精a在线观看 | 精品国产一区二区国模嫣然 | 在线观看成人 | 精品蜜桃一区二区三区 | 精品中文字幕一区二区 |