程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> MySQL的一些優化配置

MySQL的一些優化配置

編輯:關於MYSQL數據庫
   服務器的監聽端口設置

TCP/IP端口3306是MySQL服務器默認的網絡監聽端口,如用--skip-networking選項啟動服務器,則不監聽TCP/IP端口。可用--port端口另行指定一個監聽端口。如服務器主機有多個IP,還可用--bind-address選項對服務器在監聽客戶連接時使用的IP地址進行設定。

在UNIX系統上,MySQL可在一個UNIX域套接字文件上監聽有無本地客戶在試圖以localhost為主機名進行連接。默認的套接字文件是/tmp/MySQL.sock,可用--socket選項指定另外一個套接字文件。

在基於NT的Windows平台上,有-nt的MySQL服務器都支持命名管道。默認的命名管道是MySQL,可用--socket選項另行指定。

啟用或禁用LOAD DATA語句的LOCAL能力

可在MySQL服務器編譯時,用configure腳本的--enable-local-infile或--disable-local-infile選項把LOAD DATA語句的LOCAL能力設置為啟用或禁用;

在MySQL服務器啟動是,可以用--local-infile或--disable-local-infile選項來啟用或禁用服務器的LOCAL能力(在MySQL 4.0.2之前的版本裡,要用--local-infile=0來禁用它)。

如果在服務器端禁用了LOCAL的能力,則客戶端就不能使用該功能;如服務器啟用了LOCAL的能力,客戶端默認也是禁止使用的,但可用MySQL程序的--local-infile選項啟用它。

國際化和本地化,國際化是指軟件能夠在世界多個國家地區使用,而本地化則是指可從國際化軟件中選擇一套適合本地區的語言和習慣的設置來使用。在MySQL中的國際化和本地化設置有以下幾方面內容:

時區,如果時區設置不對,則服務器顯示的時間將會和當地時間有沖突。設置方法可通過MySQLd_safe腳本的--timezone選項來設置,但最好還是在選項文件裡設置,如:

[MySQLd_safe]
timezone=US/Central
配置顯示信息的語言,MySQL能用多種語言來顯示診斷信息與出錯信息,默認是英語。查看share/mysql目錄下有幾個以語言名稱作為目錄名的目錄就可知道有哪些語言可供選擇。可用--language啟動選項來指定語言,如--language=/usr/local/mysql/share/MySQL/french。

配置服務器的字符集,MySQL支持多種字符集,可在share/mysql/charsets目錄下查詢支持的字符集,也可用show variables like 'character_sets'來顯示支持的字符集清單。MySQL把latin1作為默認的字符集。可在編譯時用--with-charset指定另外一個字符集為默認字符集。如要增加另外的字符集支持,可用--with-extra-charasets選項進行添加。如:

% ./configure --with-extra-charsets=latin1,gb2312,big5
--with-extra-charsets有兩個特殊的選項,一個是all,代表所有可用字符集;一個是complex,代表所有的復雜字符集(包括多字節字符集和有特殊排序規則的字符集)。

服務器啟動時,使用默認字符集,如需指定另外的字符集,需用--default-character-set選項指明。

在MySQL 4.1以前,如果在創建好數據表後改變服務器的默認字符集,就需對索引重新排序才能保證索引鍵值能夠正確反映出數據表記錄在新字符集下的排列順序。重新排序的操作命令如下:

% myisamchk --recover --quick --set-character-set=gb2312       #在執行該語句需關閉服務器,適用於MyISAM數據表
也可用:
% MySQLcheck --repair --quick                                  #不需關閉服務器,適用於各種數據表
或者用:
MySQL> REPLACE TABLE ... QUICK;
在客戶端,可用--default-character-set選項指定客戶程序使用的字符集。--character-sets-dir選項可指出字符集文件的安裝目錄。

升級數據表到4.1,支持多字符集數據表。步驟如下:

用MySQLdump程序備份數據庫:

% MySQLdump -p -u root --all-databases --opt > dumpfile.sql
--all-databases選項的作用是轉儲所有數據庫;
--opt選項的作用是對轉儲文件進行優化。
關閉服務器,升級MySQL服務器軟件到4.1版。

用備份文件重新加載數據表:

% MySQL -p -u root < dumpfile.sql
這樣,字符集信息就被分配到每一個數據列中,此後,即使服務器改變了默認的字符集,各數據列的字符集也不會改變。當以後修改某個數據列的字符集時,服務器會自動重索引,以反映最新變化。

配置InnoDB表空間。InnoDB表空間在邏輯上是一個連接的存儲區域,但實際上是由一個或多個磁盤文件組成。這些文件可以是普通的文件,也可以是一個未格式化的原始硬盤分區。InnoDB表空間通過一系列的配置選項來設置,其中最重要的有以下兩個:

為確保服務器每次啟動時都能調用同樣的選項,InnoDB的選項最好存放到選文件中。下面是一個例子:

innodb_data_home_dir =
innodb_data_file_path=/usr/loca/MySQL/data/idbdata1:10M:autoextend:max:100M
說明:
InnoDB表空間文件默認存放到了MySQL的數據目錄中,名字叫idbdata1;
文件長度為10M;
可自動擴展,以8M為步長擴展,如有多個數據文件,只允許最後一個文件可自動擴展;
規定了最大的可擴展尺寸為100M。
innodb_data_home_dir,設置InnoDB表空間各組成文件的父目錄,如果沒有指出,則默認是MySQL的數據目錄。

innodb_data_file_path,描述InnoDB主目錄中各有關文件,包括文件名,文件長度和一些選項。各文件以分號分隔,各組成文件長度至少為10M。

把選項寫入選項文件後,啟動服務器就可自動創建和初始化InnoDB表空間。

利用原始磁盤分區作為InnoDB表空間可創建一個非常大的表空間,不受操作系統單文件最大容量的限制。並且能有效減少磁盤碎片的產生。要使用原始磁盤分區,需作如下配置:

首先,要進行初始化,在選項文件的[MySQLd]中配置:

innodb_data_home_dir=
innodb_data_file_path=/dev/hda1:10Gnewraw     #初始化/dev/hda1這個10G容量的分區
啟動服務器,服務器會對這個10G的分區進行初始化。

接著,關閉服務器,修改配置文件,把newraw改為raw,如:

innodb_data_home_dir=
innodb_data_file_path=/dev/hda1:10Graw
重新啟動服務器,MySQL就會以讀/寫方式使用該表空間了。在windows平台上配置InnoDB表空間時,Windows路徑名中的反斜槓可以寫成單個的斜線字符(/)。也可寫成兩個反斜槓(\\)。如:

innodb_data_home_dir=
innodb_data_file_path=c:/MySQL/data/ibdata1:10M;d:/ibdata2:20M
默認情況下,InnoDB的日志文件會存儲在MySQL的數據目錄,文件名以ib開頭。一旦完成InnoDB表空間的初始化,就不能改變組成文件的大小,但可通過添加數據文件或設置自動擴展來增加表空間容量。如需通過增加文件的方法擴大表空間的容量,可按以下步驟進行:

關閉正在運行的MySQL服務器

如果InnoDB表空間的最後一個組成文件是可自擴展的,就要先把它改變成一個固定長度文件才能把另一個文件添加到它後面。方法是先計算出該文件的近似大小,重新設置,如:

innodb_data_file_path=ibdata1:100M:autoextend
改成:
innodb_data_file_path=ibdata1:150M
把新的組成文件添加到文件清單的末尾,該文件可以是普通文件,也可以是一個原始硬盤分區。

重啟服務器。

還有一種方法重新配置InnoDB表空間,就是先備份,再重新配置,最後重新加載備份。具體步驟如下:

使用MySQLdump備份整個InnoDB數據庫;

關閉服務器,刪除所有InnoDB表空間、InnoDB日志文件 及InnoDB數據表的.frm文件;

重新配置InnoDB表空間;

配置完成後,用備份文件重載數據,生成新的InnoDB數據表。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved