Apache伺服器最佳化、PHP最佳化、Mysql最佳化
對於程式開發人員而言,目前使用最流行的兩種後台資料庫即為MySQL and SQL Server。這兩者最基本的相似之處在於資料存放區和屬於查詢系統。如果你想建立一個.NET伺服器體系,這一體系可以從多個不同平台訪問資料,參與資料庫的管理,那麼你可以選用SQL Server伺服器。如果你想建立一個第三方動態網站,從這一網站可以從一些用戶端讀取資料,那麼MySQL將是一個不錯的選擇。
1、編譯和安裝MySQL
通過你的系統挑選可能最好的編譯器,你通常可以獲得10-30%的效能提高。在Linux/Intel平台上,用pgcc(gcc的奔騰晶片最佳化版)編譯MySQL。然而,二進位代碼將只能運行在Intel奔騰CPU上。 對於一種特定的平台,使用MySQL參考手冊上推薦的最佳化選項。用你將使用的字元集編譯MySQL。 靜態編譯產生mysqld的執行檔案(用--with-mysqld-ldflags=all-static)並用strip sql/mysqld整理最終的執行檔案。 注意,既然MySQL不使用C++擴充,不帶擴充支援編譯MySQL將贏得巨大的效能提高。
2、最佳化表
MySQL擁有一套豐富的類型。應該對每一列嘗試使用最有效類型。ANALYSE過程可以協助你找到表的最優類型:SELECT * FROM table_name PROCEDURE ANALYSE()。對於不儲存NULL值的列使用NOT NULL,這對你想索引的列尤其重要。 將ISAM類型的表改為MyISAM。用固定的表格式建立表。
3、正確使用索引
索引用來快速地尋找那些具有特定值的記錄,所有MySQL索引都以B-樹的形式儲存。如果沒有索引,執行查詢時MySQL必須從第一個記錄開始掃描整個表的所有記錄,直至找到符合要求的記錄。如果表有1000個記錄,通過索引尋找記錄至少要比順序掃描記錄快100倍。
假設我們建立了一個名為people的表:
- CREATE TABLE people ( peopleid SMALLINT NOT NULL, name CHAR(50) NOT NULL );
然後,我們完全隨機把1000個不同name值插入到people表。
但是索引也是有缺點的,首先,索引要佔用磁碟空間。通常情況下,這個問題不是很突出。但是,如果你建立每一種可能列組合的索引,索引檔案體積的增長速度將遠遠超過資料檔案。如果你有一個很大的表,索引檔案的大小可能達到作業系統允許的最大檔案限制。如果MySQL能估計出它將可能比掃描整張表還要快時,則不使用索引。另外,對於需要寫入資料的操作,比如DELETE、UPDATE操作,索引會降低它們的速度。這是因為MySQL不僅要把改動資料寫入資料檔案,而且它還要把這些改動寫入索引檔案。
4、 減少使用字元集編譯MySQL
MySQL目前提供多達24種不同的字元集(許多語言版本),為全球使用者以他們自己的語言插入或查看錶中的資料。預設情況下,MySQL安裝所有者這些字元集,所以最好的選擇是安裝一兩種你需要的就可以了(中文、英文)。
總結:本文介紹了如何在現有硬體條件下提高系統效能,網路系統管理員充分瞭解自己的電腦和網路,從而找到真正的瓶頸所在。在預算短缺的今天,理解如何最佳化系統效能比以往任何時候都重要。一味地硬體投資並不是能夠讓人們接受的辦法,而且還也不一定生效。
以上就是LAMP伺服器效能最佳化技巧,文章到此結束。您的LAMP伺服器最佳化好沒呢?