LAMP服務(wù)器性能優(yōu)化技巧之Mysql優(yōu)化
對(duì)于程序開(kāi)發(fā)人員而言,目前使用最流行的兩種后臺(tái)數(shù)據(jù)庫(kù)即為MySQL and SQL Server。這兩者最基本的相似之處在于數(shù)據(jù)存儲(chǔ)和屬于查詢(xún)系統(tǒng)。如果你想建立一個(gè).NET服務(wù)器體系,這一體系可以從多個(gè)不同平臺(tái)訪(fǎng)問(wèn)數(shù)據(jù),參與數(shù)據(jù)庫(kù)的管理,那么你可以選用SQL Server服務(wù)器。如果你想建立一個(gè)第三方動(dòng)態(tài)網(wǎng)站,從這一站點(diǎn)可以從一些客戶(hù)端讀取數(shù)據(jù),那么MySQL將是一個(gè)不錯(cuò)的選擇。
1、編譯和安裝MySQL
通過(guò)你的系統(tǒng)挑選可能最好的編譯器,你通??梢垣@得10-30%的性能提高。在Linux/Intel平臺(tái)上,用pgcc(gcc的奔騰芯片優(yōu)化版)編譯MySQL。然而,二進(jìn)制代碼將只能運(yùn)行在Intel奔騰CPU上。 對(duì)于一種特定的平臺(tái),使用MySQL參考手冊(cè)上推薦的優(yōu)化選項(xiàng)。用你將使用的字符集編譯MySQL。 靜態(tài)編譯生成mysqld的執(zhí)行文件(用--with-mysqld-ldflags=all-static)并用strip sql/mysqld整理最終的執(zhí)行文件。 注意,既然MySQL不使用C++擴(kuò)展,不帶擴(kuò)展支持編譯MySQL將贏(yíng)得巨大的性能提高。
2、優(yōu)化表
MySQL擁有一套豐富的類(lèi)型。應(yīng)該對(duì)每一列嘗試使用最有效的類(lèi)型。ANALYSE過(guò)程可以幫助你找到表的最優(yōu)類(lèi)型:SELECT * FROM table_name PROCEDURE ANALYSE()。對(duì)于不保存NULL值的列使用NOT NULL,這對(duì)你想索引的列尤其重要。 將ISAM類(lèi)型的表改為MyISAM。用固定的表格式創(chuàng)建表。
3、正確使用索引
索引用來(lái)快速地尋找那些具有特定值的記錄,所有MySQL索引都以B-樹(shù)的形式保存。如果沒(méi)有索引,執(zhí)行查詢(xún)時(shí)MySQL必須從第一個(gè)記錄開(kāi)始掃描整個(gè)表的所有記錄,直至找到符合要求的記錄。如果表有1000個(gè)記錄,通過(guò)索引查找記錄至少要比順序掃描記錄快100倍。
假設(shè)我們創(chuàng)建了一個(gè)名為people的表:
- CREATE TABLE people ( peopleid SMALLINT NOT NULL, name CHAR(50) NOT NULL );
然后,我們完全隨機(jī)把1000個(gè)不同name值插入到people表。
但是索引也是有缺點(diǎn)的,首先,索引要占用磁盤(pán)空間。通常情況下,這個(gè)問(wèn)題不是很突出。但是,如果你創(chuàng)建每一種可能列組合的索引,索引文件體積的增長(zhǎng)速度將遠(yuǎn)遠(yuǎn)超過(guò)數(shù)據(jù)文件。如果你有一個(gè)很大的表,索引文件的大小可能達(dá)到操作系統(tǒng)允許的最大文件限制。如果MySQL能估計(jì)出它將可能比掃描整張表還要快時(shí),則不使用索引。另外,對(duì)于需要寫(xiě)入數(shù)據(jù)的操作,比如DELETE、UPDATE操作,索引會(huì)降低它們的速度。這是因?yàn)镸ySQL不僅要把改動(dòng)數(shù)據(jù)寫(xiě)入數(shù)據(jù)文件,而且它還要把這些改動(dòng)寫(xiě)入索引文件。
4、 減少使用字符集編譯MySQL
MySQL目前提供多達(dá)24種不同的字符集(許多語(yǔ)言版本),為全球用戶(hù)以他們自己的語(yǔ)言插入或查看表中的數(shù)據(jù)。缺省情況下,MySQL安裝所有者這些字符集,所以最好的選擇是安裝一兩種你需要的就可以了(中文、英文)。
總結(jié):本文介紹了如何在現(xiàn)有硬件條件下提高系統(tǒng)性能,網(wǎng)絡(luò)管理員充分了解自己的計(jì)算機(jī)和網(wǎng)絡(luò),從而找到真正的瓶頸所在。在預(yù)算短缺的今天,理解如何優(yōu)化系統(tǒng)性能比以往任何時(shí)候都重要。一味地硬件投資并不是能夠讓人們接受的辦法,而且還也不一定生效。
以上就是LAMP服務(wù)器性能優(yōu)化技巧,文章到此結(jié)束。您的LAMP服務(wù)器優(yōu)化好沒(méi)呢?
- 101個(gè)MySQL優(yōu)化技巧和提示
- MySQL優(yōu)化必須調(diào)整的10項(xiàng)配置
- mysql優(yōu)化取隨機(jī)數(shù)據(jù)慢的方法
- 跟著hsp一步步學(xué)mysql優(yōu)化的方法
- 有關(guān)mysql優(yōu)化的一些東東整理
- MySQL優(yōu)化配置文件my.ini(discuz論壇)
- mysql優(yōu)化配置參數(shù)
- MySQL性能優(yōu)化 出題業(yè)務(wù)SQL優(yōu)化
- 非常不錯(cuò)的MySQL優(yōu)化的8條經(jīng)驗(yàn)
- MySQL優(yōu)化全攻略-相關(guān)數(shù)據(jù)庫(kù)命令
- mysql數(shù)據(jù)庫(kù)sql優(yōu)化原則(經(jīng)驗(yàn)總結(jié))
相關(guān)文章
阿里云Centos6.X發(fā)郵件遇到的各種問(wèn)題
這兩天用PHPMailer寫(xiě)了個(gè)發(fā)送郵件功能,在本地測(cè)試可以發(fā)送郵件,但是放到阿里云服務(wù)器缺發(fā)送不了,經(jīng)過(guò)查詢(xún),最終解決了,把方法分享給大家2018-09-09基于CentOS的Hadoop分布式環(huán)境的搭建開(kāi)發(fā)
本篇文章介紹了基于CentOS的Hadoop分布式環(huán)境的搭建開(kāi)發(fā),有興趣的可以了解一下。2016-11-11詳解centos7上elastic search安裝及填坑記
本篇文章主要介紹了centos7上elastic search安裝及填坑記,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-01-01詳解Win10 Bash/WSL調(diào)試Linux環(huán)境下的.NET Core應(yīng)用程序
本篇文章主要介紹了詳解Win10 Bash/WSL調(diào)試Linux環(huán)境下的.NET Core應(yīng)用程序 ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04Linux kde中11個(gè)你不知道的應(yīng)用程序
今天小編就為大家分享一篇關(guān)于Linux kde中11個(gè)你不知道的應(yīng)用程序,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-10-10Logrotate實(shí)現(xiàn)Catalina.out日志每倆小時(shí)切割示例
Logrotate是一個(gè)日志文件管理工具,它是Linux默認(rèn)自帶的一個(gè)日志切割工具。本篇文章主要介紹了Logrotate實(shí)現(xiàn)Catalina.out日志每倆小時(shí)切割示例,有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助2019-02-02