1 關於中斷session操作
mysql如果在前台執行drop table操作,中斷了前台session
1 經過我測試,會執行成功,但是mysql.err會記錄一些錯誤.而且刪除後確實可以建立同名表
2 中斷的時機不同,報錯的日誌可能不一樣
3 手動ctrl+c kill xshell斷開連線 這三者對於drop table 都一樣
4 記住任何前台操作一定要執行後台操作,不然會有危險,養成良好習慣
2 關於drop 大表
0 選擇在業務不繁忙的情況
1 rename table to table_new 這樣是為了將bf中的關於該錶的髒頁重新整理到磁碟中
2 ln table_new table_new.delete 建立linux硬鏈結
3 drop table
4 linux實現刪除表 利用truncate命令
truncate=/usr/local/bin/truncate
for i in `seq 2194 -1 1 `;
do sleep 2
$truncate -s $g /data/mysql/mytest/erp.ibd.hdlk
done
rm -rf /data/mysql/mytest/erp.ibd.hdlk
3 drop 操作最新總結
可能觸發的動作
1 ahi短時間內會釋放大量的記憶體
2 表的髒頁會重新整理到磁碟
3 針對ibd檔案會執行delete操作
可能的觀察引數
1 innodb_buffer_pool_pages_misc大量釋放,innodb_buffer_pool_pages_free值同時增長,釋放和增加的內容總量基本一致
2 在semaphores相關資訊中,可以看到hang死期間大量thread請求s-lock
可能導致問題
1 mysql thread hung
2 page cleaner 超時
總結drop table引起的mysql 短暫hang死的問題,是由於drop 一張使用ahi空間較大的表時,呼叫執行ahi的清理動作,會消耗較長時間,執行期間長時間持有dict_operation_lock的x鎖,阻塞了其他後台執行緒和使用者執行緒;
drop table執行結束鎖釋放,mysql積壓的使用者執行緒集中執行,出現了併發執行緒和連線數瞬間上公升的現象。規避問題的方法,可以考慮在drop table前關閉ahi。
關於GIL的案例
例1 import threading import time def run n print task n time.sleep 2 print task done n start time time.time for i in range 5 t threading.thread target ...
systemverilog中關於事件的那些事
說道systemverilog中的執行緒間通訊,不得不說一下事件 event 事件也就兩種 邊沿阻塞 e 和電平阻塞 wait e.triggered 1.事件通過 操作符來觸發事件,通過 或者wait等待事件的觸發。2.相當於verilog中的邊沿觸發,一定要先於 只在觸發的那一瞬間有效 而tri...
python 關於IF的使用案例
import math import random 練習1,判斷是否潤年 def fan year int input 你問我猜 if year 400 0 or year 4 0 and year 100 0 print 您輸入的年份 d 是潤年 year else print 您輸入的年份 d ...