最近分析資料庫問題總結(linux mysql)

2021-05-21 19:06:11 字數 1250 閱讀 2613

1、show processlist非常有用,正常狀態下,非sleep狀態的程序應該只有幾個,偶爾出現十幾個、幾十個,但是成百上線的就不正常了。sleep狀態的不用管,一般使用了連線池就會有大量的sleep程序(連線)。

2、如何分析各種狀態的連線數?首先執行mysql –uroot –p123456 –e 「show processlist」 | grep –v sleep > tmp.txt將非sleep狀態的連線(程序)的情況輸出到tmp.txt檔案。然後就使用grep和wc -l來統計。比如我想知道有多少個blocked,那麼執行cat tmp.txt | grep blocked | wc –l。

3、出現大量blocked狀態的連線,可以設定以下兩個引數:low_priority_updates和concurrent_insert兩個引數,具體數值網上查。前者的意思是讓update/insert操作的優先順序低於select操作。

4、不能忽略的乙個事實是:select語句是會上鎖的,是read鎖,上了read鎖之後,任何insert、update都會被block住。而如果low_priority_updates=off的話,一旦有乙個insert/update被block住,此後來的select也會被blocked。(以上都是指myisam同乙個表)。因此乙個大查詢是有可能導致大量被block的程序出現的。

5、myisam真的不適合頻繁更新的系統。但innodb也有它的麻煩:備份麻煩、乙個資料庫寫在乙個檔案不便於管理維護等,系統工程部的人不推薦使用。再只有mysql可使用的情況下,使用好快取,不去實時運算元據庫是唯一的藥方。

6、group by等類似操作時毒藥,能不用盡量不用,尤其在高併發的系統中,尤其如此。

7、寫了乙個指令碼放到了crontab,每段時間取一次show processlist的情況,對資料庫情況分析非常有用:

#!/bin/bash

dd=`date +%y-%m-%d%t%r`

echo $dd >>/usr/local/2.txt

/usr/local/mysql/bin/mysql -psd-9898w -h10.1.1.161 -e "show processlist" >/usr/local/1.txt

zs=`cat /usr/local/1.txt | wc -l`

sl=`cat /usr/local/1.txt | grep -v sleep | wc -l`

echo -n  1.161 $//$ >>/usr/local/2.txt

echo "">>/usr/local/2.txt

最近導資料庫的問題

需要制定相同的表空間。一 以管理員身份鏈結資料庫 cmd執行sqlplus,輸入語句system as sysdba 按兩次回車登入。二 建立表空間語句 注意表空間名稱必須為v3sns 大小為10g createtablespace v3sns datafile e projects dspace ...

資料庫問題總結

我對昨晚資料庫公升級出現的問題現在總結一下 下邊是錯誤 sql0668n 原因碼為 1 所以不允許操作 sqlstate 57016 1.最根本的問題是load的問題 copy yes nonrecoverable 對於dms表空間,load預設為copy no 模式,此模式下,load完成後,表空...

資料庫問題總結

1 mysql資料庫儲存原理 儲存的過程是乙個可程式設計的函式,在資料庫中建立並儲存,有以下優點 1 儲存過程能實現較快的執行速度 2 儲存過程允許標準元件是程式設計。3 儲存過程可以用流程控制語句編寫,有很強的靈活性,可以完成複雜的判斷 和較複雜的運算。4 儲存過程可被作為一種安全機制來充分利用。...