Mysql
打開和關閉數據庫連接的成本是多少?
CPU 密集型如何在 MySQL 中打開和關閉數據庫連接(對於 Web 應用程序)
- …當數據庫軟體在本地主機上時?
- …當數據庫軟體在另一台機器上時?
考慮每個 DB 連接分配的記憶體量。哪些東西必須分配?根據MySQL 5.0 認證學習指南,第 357 頁:
伺服器為每個客戶端連接維護幾個緩衝區。一個用作與客戶端交換資訊的通信緩衝區。每個客戶端都維護其他緩衝區,用於讀取表並執行連接和排序操作。
哪些設置控制每個連接的緩衝區?
- 加入緩衝區大小
- 排序緩衝區大小
- 讀取緩衝區大小
- read_rnd_buffer_size
- tmp_table_size / max_heap_table_size
- net_buffer_length / max_allowed_packet
- 執行緒堆棧
當連接建立時,分配和釋放這些緩衝區需要時間。不要忘記將這些值的總和乘以max_connections。作為旁注,請不要使用mysql_pconnect,因為 PHP 和 MySQL 的持久連接不能很好地相處。以下是有關此主題的兩個資訊連結:
在諸如 OLTP 之類的重讀、重寫環境中,這在 RAM 使用方面會很昂貴,並且可能由於作業系統中的交換而受到抑制。在低寫入、低讀取的網站上,我不會那麼擔心。