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