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