discuz x2.5 mysql_DiscuzMySQL 优化 - Discuz! X2.5 效率机制 - 1314学习网
例如:首頁的在線人數等,在實際產品中,有些數據不一定需要實時更新的,因為對于這類型的數據來說,實時更新的價值不高,對于這種情況我們可以考慮在產品研發過程中引入廷遲更新機制,這樣可以從一定程度上降低SQL的負載。
索引
索引的合理使用,能給你帶來高效的SQL查詢,但不是索引越多越好,索引的引入需在查看整個模塊的設計,使之最大程度上使用索引。
讀寫分離
讀寫分離,在X2的版本中,我們引入了多SQL服務器的支持,在主從服務器中,你可以配置寫服務器跟讀服務器,這樣對于負載高的站點中可以使用這個功能達到讀寫分離,降低由于寫過程序中造成的MySQL表鎖定后的SQL排隊等候時間過長。當你的服務器支持讀寫分離要求時,你可以在config_global.php中配置。例如:
/**
* 數據庫主服務器設置, 支持多組服務器設置, 當設置多組服務器時, 則會根據分布式策略使用某個服務器
* @example
* $_config['db']['1']['dbhost'] = 'localhost'; // 服務器地址
* $_config['db']['1']['dbuser'] = 'root'; // 用戶
* $_config['db']['1']['dbpw'] = 'root';// 密碼
* $_config['db']['1']['dbcharset'] = 'gbk';// 字符集
* $_config['db']['1']['pconnect'] = '0';// 是否持續連接
* $_config['db']['1']['dbname'] = 'x1';// 數據庫
* $_config['db']['1']['tablepre'] = 'pre_';// 表名前綴
*
* $_config['db']['2']['dbhost'] = 'localhost';
* ...
*
*/
$_config['db'][1]['dbhost'] = 'localhost';
$_config['db'][1]['dbuser'] = 'root';
$_config['db'][1]['dbpw'] = 'root';
$_config['db'][1]['dbcharset'] = 'gbk';
$_config['db'][1]['pconnect'] = 0;
$_config['db'][1]['dbname'] = 'ultrax';
$_config['db'][1]['tablepre'] = 'pre_';
/**
* 數據庫從服務器設置( slave, 只讀 ), 支持多組服務器設置, 當設置多組服務器時, 系統每次隨機使用
* @example
* $_config['db']['slave']['1']['dbhost'] = 'localhost';
* $_config['db']['slave']['1']['dbuser'] = 'root';
* $_config['db']['slave']['1']['dbpw'] = 'root';
* $_config['db']['slave']['1']['dbcharset'] = 'gbk';
* $_config['db']['slave']['1']['pconnect'] = '0';
* $_config['db']['slave']['1']['dbname'] = 'x2';
* $_config['db']['slave']['1']['tablepre'] = 'pre_';
*
* $_config['db']['slave']['2']['dbhost'] = 'localhost';
* ...
*
*/
$_config['db']['slave'] = array();
SQL查詢與循環
禁止在循環中進行相應的SQL查詢,當遇到這種情況時,可以盡可能的將其轉換成循環外的查詢。
NOT IN
在SQL查詢中禁用NOT IN條件,NOT IN的效率比IN低很多,當使用IN時,也要盡可能的保證IN的數量。
SQL分拆
化繁為簡,在優化過程中,盡可能的化繁為簡,把復雜的SQL分拆成幾個簡單的SQL更有種于對整體SQL的優化處理。
總結
以上是生活随笔為你收集整理的discuz x2.5 mysql_DiscuzMySQL 优化 - Discuz! X2.5 效率机制 - 1314学习网的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ES6笔记 -- 变量/语句声明
- 下一篇: 安装elasticsearch-php,