成人免费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技術棧公眾號

主站蜘蛛池模板: aaa一区| 99国产精品一区二区三区 | 波多野结衣一区二区三区 | 欧美激情国产精品 | 日韩精品在线免费 | 久久综合一区 | 在线四虎 | 视频一区在线 | 中文字幕在线剧情 | av在线三级 | 黄色毛片在线观看 | 久久久国产精品一区 | 欧美一级二级视频 | 欧美色综合一区二区三区 | 视频一区中文字幕 | 日韩精品久久一区二区三区 | 欧美成人精品在线 | 中文字幕亚洲一区 | 久久久久久蜜桃一区二区 | 九九一级片 | 91精品国产日韩91久久久久久 | 日韩欧美亚洲 | 日韩一区二区三区在线看 | 国产99热精品 | 久草视 | 91大片| 精品三区 | 中文字幕一区二区三区在线乱码 | 亚洲欧美视频一区二区 | 国产探花在线精品一区二区 | 亚洲精品在线看 | 成人免费观看视频 | 91在线视频精品 | 国产美女在线观看 | 麻豆av一区二区三区久久 | 国产精品高潮呻吟久久久久 | 狠狠色香婷婷久久亚洲精品 | 一区二区在线不卡 | 亚洲精品久久久一区二区三区 | 黄色欧美在线 | 国产一区二区三区久久久久久久久 |