mysql頻繁鎖邊原因排查 MySQL 碎片

2021-10-18 12:11:12 字數 1794 閱讀 3143

檢視某個表所佔空間,以及碎片大小。

select table_name,engine,table_rows,data_length+index_length length,data_free from information_schema.tables where table_schema='test';

或者select table_name,engine,table_rows,data_length+index_length length,data_free from information_schema.tables where data_free !=0;

| table_name | engine | table_rows | length | data_free |

| curs       | innodb |          0 |  16384 |         0 |

| t          | innodb |         10 |  32768 |         0 |

| t1         | innodb |          9 |  32768 |         0 |

| tn         | innodb |          7 |  16384 |         0 |

table_name 表的名稱

engine :表的儲存引擎

table_rows  表裡存在的行數

data_length 表的大小(表資料+索引大小)

data_free :表碎片的大小

以上單位都是byte位元組

整理碎片過程會鎖邊,盡量放在業務低峰期做操作

1、myisam儲存引擎清理碎片

optimize table 表名,表名;

2、innodb儲存引擎清理碎片

alter table 表名 engine=innodb;

整理碎片過程會鎖邊,盡量放在業務低峰期做操作

1.mysql官方建議不要經常(每小時或每天)進行碎片整理,一般根據實際情況,只需要每週或者每月整理一次即可。

2.optimize table執行過程中,mysql會鎖定表。

3.預設情況下,直接對innodb引擎的資料表使用optimize table或指令碼**innodb表碎片

指令碼:(指令碼未測試)

#!/bin/bash

db=test

user=root

passwd=root123

host=192.168.2.202mysql_bin=/usr/local/mysql/bin

d_engine=innodb

$mysql_bin/mysql -h$host -u$user -p$passwd $db -e "select table_name from information_schema.tables where table_schema='"$db"'"';" | grep -v "table_name" >tables.txt

for t_name in`cat tables.txt`doecho"starting table $t_name......"sleep1$mysql_bin/mysql -h$host -u$user -p$passwd $db -e "alter table $t_name engine='"$d_engine"'"

if [ $? -eq 0] then

echo"shrink table $t_name ended." >>con_table.log

sleep1

elseecho"shrink failed!" >>con_table.log

fidone

mysql頻繁鎖邊原因排查 MySQL 碎片

檢視某個表所佔空間,以及碎片大小。select table name,engine,table rows,data length index length length,data free from information schema.tables where table schema test ...

Oracle使用者頻繁被鎖原因排查與解決

問題描述 專案小組同事說最近一段時間內,oracle使用者總是頻繁被鎖,導致應用及客戶端均無法登入運算元據庫。現象跟蹤 通過檢視監聽日誌listener.log,發現很多從10.1.3.107應用伺服器過來的訪問記錄,並伴有警告資訊出現,部分內容如下 05 aug 2015 03 49 57 con...

MySQL 簡單insert 一秒原因排查

這個問題是來自一位朋友 春波,我通過pstack最終確認問題,涉及到兩個引數的設定,我將從原始碼進行解釋,如果有誤還請見諒。1 簡單插入需要1秒 語句截圖如下 耗時截圖如下 2 profile展示 實際上這裡的query end是乙個非常有用的資訊,基本確認是在order commit函式上的等待。...