一、mysql怎么查看連接池是否已滿
1.查看連接數(shù)配置(MySQL服務(wù)器允許的最大連接數(shù)16384)
show variables like ‘%max_connections%’
2.查看當(dāng)前連接數(shù)
方法1:show full processlist (需要用管理員帳號(hào))
方法2:mysqladmin -u root -proot status(Threads 值是當(dāng)前連接數(shù))
如果當(dāng)前連接數(shù)和連接數(shù)配置接近,說(shuō)明連接數(shù)差不多滿了。
使用 MySQL 數(shù)據(jù)庫(kù)的站點(diǎn),當(dāng)訪問(wèn)連接數(shù)過(guò)多時(shí),就會(huì)出現(xiàn) “Too many connections” 的錯(cuò)誤。出現(xiàn)這種錯(cuò)誤有兩種情況,一種是網(wǎng)站訪問(wèn)量實(shí)在太大,服務(wù)器已經(jīng)負(fù)擔(dān)不起,此時(shí)就應(yīng)該考慮負(fù)載均衡或者其它減少服務(wù)器壓力的辦法。另一種情況就是 MySQL 的連接池大連接數(shù)設(shè)置得太小,當(dāng)訪問(wèn)量稍大就出現(xiàn)連接過(guò)多的錯(cuò)誤。win7下配置PHP+Apache+Mysql運(yùn)行環(huán)境
MySQL 默認(rèn)的連接池大連接數(shù)為 100,可以在 mysql 客戶端使用以下命令查看
mysql> show variables like ‘max_connections’;
此命令將得到類似以下的輸出結(jié)果:
+—————–+——-+
| Variable_name | Value |
+—————–+——-+
| max_connections | 2000 |
+—————–+——-+
1 row in set (0.00 sec)
要對(duì) mysql 的連接池大連接數(shù)進(jìn)行修改,只需要在 my.cnf 配置文件里面修改 max_connections 的值,然后重啟 mysql 就行。如果 my.ini 文件中沒(méi)有找到 max_connections 條目,可自行添加以下條目
max_connections = 200
修改MySQL連接池大連接數(shù)
方法一:
進(jìn)入MySQL安裝目錄 打開(kāi)MySQL配置文件 my.ini 或 my.cnf查找 max_connections=100 修改為 max_connections=1000 服務(wù)里重起MySQL即可
方法二:
MySQL連接池大連接數(shù)默認(rèn)是100客戶端登錄:
MySQL -uusername -ppassword
設(shè)置新的MySQL連接池大連接數(shù)為200:
MySQL> set GLOBAL max_connections=200
顯示當(dāng)前運(yùn)行的Query:
MySQL> show processlist
顯示當(dāng)前狀態(tài):
MySQL> show status
退出客戶端:MySQL> exit
查看當(dāng)前MySQL連接池大連接數(shù):MySQLadmin -uusername -ppassword variables
方法三:
以centos 4.4 下面的MySQL 5.0.33 手工編譯版本為例說(shuō)明:
vi /usr/local/MySQL/bin/MySQLd_SAFe
找到SAFe_MySQLd編輯它,找到MySQLd啟動(dòng)的那兩行,在后面加上參數(shù) :
-O max_connections=1500
具體一點(diǎn)就是下面的位置:
then $NOHUP_NICENESS $ledir/$MySQLD? ? ?
延伸閱讀:
二、undo log的工作原理
在更新數(shù)據(jù)之前,MySQL會(huì)提前生成undo log日志,當(dāng)事務(wù)提交的時(shí)候,并不會(huì)立即刪除undo log,因?yàn)楹竺婵赡苄枰M(jìn)行回滾操作,要執(zhí)行回滾(rollback)操作時(shí),從緩存中讀取數(shù)據(jù)。undo log日志的刪除是通過(guò)通過(guò)后臺(tái)purge線程進(jìn)行回收處理的。
1、事務(wù)A執(zhí)行update操作,此時(shí)事務(wù)還沒(méi)提交,會(huì)將數(shù)據(jù)進(jìn)行備份到對(duì)應(yīng)的undo buffer,然后由undo buffer持久化到磁盤中的undo log文件中,此時(shí)undo log保存了未提交之前的操作日志,接著將操作的數(shù)據(jù),也就是Teacher表的數(shù)據(jù)持久保存到InnoDB的數(shù)據(jù)文件IBD。
2、此時(shí)事務(wù)B進(jìn)行查詢操作,直接從undo buffer緩存中進(jìn)行讀取,這時(shí)事務(wù)A還沒(méi)提交事務(wù),如果要回滾(rollback)事務(wù),是不讀磁盤的,先直接從undo buffer緩存讀取。