[返回目錄](index.html)#### [高級應用與部署](gaoji_index.html "test") —— [mysql優化](gaoji_mysql_yh.html "test")
在整體的系統運行過程中,數據庫服務器 MySQL 的壓力是最大的,不僅占用很多的內存和 cpu 資源,而且占用著大部分的磁盤 io 資源,連 PHP 的官方都在聲稱,說 PHP 腳本 80% 的時間都在等待 MySQL 查詢返回的結果。由此可見,提高系統的負載能力,降低 MySQL 的資源消耗迫在眉睫。
##### 常見優化方法:
###### 1、頁面緩存
1、頁面緩存功能是降低MySQL的資源消耗的(PHPCMS V9系統本身就已經考慮,采用生成HTML頁面,大大降低了數據庫的壓力)。
###### 2、mysql服務器的優化
2.1、修改全站搜索,修改my.ini(my.cnf) ,在 \[mysqld\] 后面加入一行“ft\_min\_word\_len=1”,然后重啟Mysql,再登錄網站后臺(模塊管理->全站搜索)重建全文索引。
2.2、記錄慢查詢sql語句,修改my.ini(my.cnf),添加如下代碼:
```
<pre class="brush:xml">
#log-slow-queries
long_query_time = 1 #是指執行超過多久的 sql 會被 log 下來
log-slow-queries = E:/wamp/logs/slow.log #設置把日志寫在那里,可以為空,系統會給一個缺省的文件
#log-slow-queries = /var/youpath/slow.log linux下 host_name-slow.log
log-queries-not-using-indexes
```
2.3、mysql緩存的設置
```
<pre class="brush:xml">
mysql>show variables like '%query_cache%';
```
mysql本身是有對sql語句緩存的機制的,合理設置我們的mysql緩存可以降低數據庫的io資源。
#query_cache_type= 查詢緩存的方式(默認是 ON)
query_cache_size 如果你希望禁用查詢緩存,設置 query_cache_size=0。禁用了查詢緩存,將沒有明顯的開銷
query_cache_limit 不緩存大于這個值的結果。(缺省為 1M) 2.4、查詢緩存的統計信息
```
<pre class="brush:xml"> mysql> SHOW STATUS LIKE ‘qcache%’;
```
Qcache_free_blocks 緩存中相鄰內存塊的個數。數目大說明可能有碎片。
FLUSH QUERY CACHE 會對緩存中的碎片進行整理,從而得到一個空閑塊。
Qcache_free_memory 緩存中的空閑內存。
Qcache_hits 每次查詢在緩存中命中時就增大。
Qcache_inserts 每次插入一個查詢時就增大。命中次數除以插入次數就是不中比率;用 1 減去這個值就是命中率。在上面這個例子中,大約有 87% 的查詢都在緩存中命中。
Qcache_lowmem_prunes 緩存出現內存不足并且必須要進行清理以便為更多查詢提供空間的次數。這個數字最好長時間來看;如果這個數字在不斷增長,就表示可能碎片非常嚴重,或者內存很少。(上面的 free_blocks 和 free_memory 可以告訴您屬于哪種情況)。
Qcache_not_cached 不適合進行緩存的查詢的數量,通常是由于這些查詢不是 SELECT 語句。
Qcache_queries_in_cache 當前緩存的查詢(和響應)的數量。
Qcache_total_blocks 緩存中塊的數量。通常,間隔幾秒顯示這些變量就可以看出區別,這可以幫助確定緩存是否正在有效地使用。運行 FLUSH STATUS 可以重置一些計數器,如果服務器已經運行了一段時間,這會非常有幫助。 2.5、my.ini(my.conf)配置
2.5.1、key\_buffer\_size
```
<pre class="brush:xml"> key_buffer_size = 256M
```
# key_buffer_size指定用于索引的緩沖區大小,增加它可得到更好的索引處理性能。
對于內存在4GB左右的服務器該參數可設置為256M或384M。注意:該參數值設置的過大反而會是服務器整體效率降低!
2.5.2、 ```
<pre class="brush:xml">
max_allowed_packet = 4M
thread_stack = 256K
table_cache = 128K
sort_buffer_size = 6M
```
查詢排序時所能使用的緩沖區大小。注意:該參數對應的分配內存是每連接獨占!如果有100個連接,那么實際分配的總共排序緩沖區大小為100 × 6 = 600MB。所以,對于內存在4GB左右的服務器推薦設置為6-8M。 2.5.3、 ```
<pre class="brush:xml">read_buffer_size = 4M
```
讀查詢操作所能使用的緩沖區大小。和sort_buffer_size一樣,該參數對應的分配內存也是每個連接獨享! 2.5.4、```
<pre class="brush:xml">join_buffer_size = 8M
```
聯合查詢操作所能使用的緩沖區大小,和sort_buffer_size一樣,該參數對應的分配內存也是每個連接獨享! 2.5.5、```
<pre class="brush:xml">
myisam_sort_buffer_size = 64M
table_cache = 512
thread_cache_size = 64
query_cache_size = 64M
```
指定MySQL查詢緩沖區的大小。可以通過在MySQL控制臺執行以下命令觀察: ```
<pre class="brush:xml">
# > SHOW VARIABLES LIKE '%query_cache%';
# > SHOW STATUS LIKE 'Qcache%';
# 如果Qcache_lowmem_prunes的值非常大,則表明經常出現緩沖不夠的情況;
#如果Qcache_hits的值非常大,則表明查詢緩沖使用非常頻繁,如果該值較小反而會影響效率,那么可以考慮不用查詢緩沖;
Qcache_free_blocks,如 果該值非常大,則表明緩沖區中碎片很多
```
2.5.6、 ```
<pre class="brush:xml">
tmp_table_size = 256M
max_connections = 768
```
指定MySQL允許的最大連接進程數。如果在訪問論壇時經常出現Too Many Connections的錯誤提示,則需要增大該參數值。 2.5.7、```
<pre class="brush:xml">
max_connect_errors = 10000000
wait_timeout = 10
```
指定一個請求的最大連接時間,對于4GB左右內存的服務器可以設置為5-10。 2.5.8、 ```
<pre class="brush:xml">thread_concurrency = 8
```
該參數取值為服務器邏輯CPU數量×2,如果服務器有2顆物理CPU,而每顆物理CPU又支持H.T超線程,所以實際取值為4 × 2 = 8 2.5.9、 ```
<pre class="brush:xml">skip-networking
```
開啟該選項可以徹底關閉MySQL的TCP/IP連接方式,如果WEB服務器是以遠程連接的方式訪問MySQL數據庫服務器則不要開啟該選項!否則將無法正常連接!
[返回目錄](index.html) 上海盛大網絡發展有限公司 c 2006 - 2011 B2-20040053.
問題和建議請反饋至:http://bbs.phpcms.cn
- 首頁
- 簡介
- PHPCMS v9 安裝環境要求
- 安裝
- Linux 環境搭建推薦教程
- Windows 環境搭建推薦教程
- CentOS5下Nginx 環境推薦教程
- PC_webserver 安裝說明
- PHPCMS V9 安裝說明
- 使用
- 后臺主界面
- 我的面板
- 修改個人信息
- 修改密碼
- 生成首頁
- 設置
- 相關設置
- 站點管理
- 發布點管理
- 基本設置
- 安全配置
- PHPSSO配置
- 郵箱配置
- connect
- 管理員設置
- 管理員管理
- 角色管理
- 模塊
- 模塊管理
- 模塊管理
- 在線充值
- 短信平臺
- 物流管理
- 外部數據導入
- 點評
- 表單向導
- 手機門戶
- 廣告
- 新聞心情
- 短消息
- 投票
- 友情鏈接
- 評論
- 公告
- 全站搜索
- 數據源
- 企業黃頁
- 模塊配置
- 分類管理
- 黃頁模型管理
- 企業模板管理
- 信息管理
- 企業庫管理
- 批量更新URL
- 內容
- 內容發布管理
- 管理內容
- 附件管理
- 專題
- 碎片管理
- 采集管理
- 評論管理
- 發布管理
- 批量更新欄目頁
- 生成首頁
- 批量更新URL
- 批量更新內容頁
- 同步到發布點
- 內容相關設置
- 管理欄目
- 模型管理
- 類別管理
- 推薦位管理
- 用戶
- 會員管理
- 會員管理
- 審核會員
- 會員模塊配置
- 會員組管理
- 管理會員組
- 會員模型管理
- 管理會員模型
- 界面
- 模板風格
- 標簽向導
- 擴展
- 附加字段管理
- 在線升級
- 信息模型設置
- 前臺菜單管理
- 來源管理
- 木馬查殺
- 更新全站緩存
- 后臺操作日志
- 下載鏡像管理
- IP禁止
- URL規則管理
- 數據庫工具
- 菜單管理
- 敏感詞管理
- Baibu/Google地圖
- 關聯鏈接
- 聯動菜單
- 工作流
- phpsso
- 會員管理
- 應用管理
- 通信信息
- 積分兌換
- 管理員管理
- 系統設置
- 更新緩存
- 修改密碼
- 應用
- 升級與轉換
- 程序升級
- 離線升級
- 在線升級
- 程序轉換
- phpcms2008 to v9
- phpcms2007 to v9
- DEDECMS 5.6 to v9
- 帝國cms 6.5 to v9
- PHP168 Sharp to v9
- 萬能數據導入
- 整合文檔
- 整合Discuz 7.0 - X1.5
- 整合Discuz X2
- 整合PHPWIND 8.7
- 標簽使用
- PC標簽使用說明
- PC標簽保留參數
- 系統常量
- 功能模塊
- 內容模塊
- 評論模塊
- 投票模塊
- 公告模塊
- 專題模塊
- 會員模塊
- 友情鏈接模塊
- 黃頁模塊
- 工具箱
- json工具箱
- xml工具箱
- get標簽
- 碎片工具箱
- 高級應用與部署
- Apache下Rewrite設置
- Sphinx全文索引教程
- Mysql開啟全文索引
- Mysql優化
- 修改后臺路徑
- 數據庫分離部署
- 萬能字段應用
- 推薦位高級應用
- 主程序與web目錄分離
- 第三方手冊
- JQuery 手冊
- artDialog 手冊
- formValidator手冊
- calendar手冊
- CKEditor
- 二次開發
- 目錄結構分析
- 數據庫結構
- 二次開發流程
- 入口程序
- 系統類庫與函數庫調用
- 配置文件調用
- 函數擴展
- 控制器擴展技巧
- 常見問題
- 采集過濾規則無效
- 網站更換域名怎么辦?
- 后臺登陸提示驗證碼錯誤
- 應用間同步登陸問題
- 提示通信失敗,用戶登錄失敗
- 如何將靜態文件生成到根目錄
- 為什么添加的內容沒有生成靜態?