亚洲精品中文字幕乱码,91porn在线观看,国内一区在线 http://www.aygfsteel.com/jiangshachina/category/23788.html同是Java愛好者,相逢何必曾相識!<br>
a cup of Java, cheers! zh-cn Sun, 19 Jul 2015 17:45:02 GMT Sun, 19 Jul 2015 17:45:02 GMT 60 MySQL: MyISAM or InnoDB?(譯) http://www.aygfsteel.com/jiangshachina/archive/2009/05/31/279288.htmlSha Jiang Sha Jiang Sun, 31 May 2009 13:41:00 GMT http://www.aygfsteel.com/jiangshachina/archive/2009/05/31/279288.html http://www.aygfsteel.com/jiangshachina/comments/279288.html http://www.aygfsteel.com/jiangshachina/archive/2009/05/31/279288.html#Feedback 2 http://www.aygfsteel.com/jiangshachina/comments/commentRss/279288.html http://www.aygfsteel.com/jiangshachina/services/trackbacks/279288.html MySQL: MyISAM or InnoDB?
通過JavaLobby 看到的一篇博文 ,為選擇MySQL的數(shù)據(jù)表引擎提供了一些意見,希望對大家有幫助。(2009.05.31最后更新)
我這個可愛的小哥哥祝可愛的小朋友們節(jié)日愉快 ^_^
MyISAM是MySQL的默認存儲引擎,但很多人忘記還有其它的選擇。決定使用哪種(哪些)存儲引擎可能需要些技巧,但評估一下MyISAM是否適合你的需要還是值得的。有一組存儲引擎可用,但我將只關注MyISAM和InnoDB,因為它們被用的最多。
需考慮的問題:
你是否需要外鍵?
你是否需要事務?
你是否需要全文索引?
你的數(shù)據(jù)訪問(查詢)模式是什么?
你的數(shù)據(jù)集有多大?
思考上述問題將使你走入正確的方向,但有些例外。如果你使用事務或外鍵,就使用InnoDB。要使用全文索引,你常需選擇MyISAM,因為它內(nèi)建地支持這一特性;但是,MyISAM難以應對超過200萬的數(shù)據(jù)行。你可以使用Sphinx以使你的InnoDB表能獲取全文索引,但這需要花費一些時間。
數(shù)據(jù)集的大小是決定你使用哪種引擎的主要因素。由于InnoDB的事務和崩潰恢復特性,對于較大的數(shù)據(jù)集,則傾向于該引擎。然而,恢復MyISAM數(shù)據(jù)表所花費的時間由數(shù)據(jù)集的大小來衡量,但恢復InnoDB所花費的時間由事務日志的大小來衡量-而你對日志有一定的控制力。例如,相較于恢復 InnoDB數(shù)據(jù)表所需要的幾分鐘,你可能需要幾小時甚至幾天時間來恢復MyISAM數(shù)據(jù)表。
你讀/寫數(shù)據(jù)表的方式可能會極大地影響你所使用的存儲引擎的性能。在MyISAM數(shù)據(jù)表中執(zhí)行COUNT()會很快,但對于InnoDB數(shù)據(jù)表則十分痛苦,最好避免。在InnoDB數(shù)據(jù)表中查找主鍵極其的快,但要注意到,太長的主鍵會影響到性能。批量插入在MyISAM數(shù)據(jù)表更快些,但批量更新在 InnoDB中會較快些--特別是當進行并發(fā)增加時。
那么你應該選擇哪種引擎呢?如果你工作在一個小項目中,那么MyISAM可能正適合你。甚至在較大環(huán)境中使用MyISAM也能獲取很大的成功,但這依具體情況不同而不同。如果你計劃用于非常大的數(shù)據(jù)集,并且需要事務或外鍵約束,那就應該直接使用InnoDB。但需要記住,相較于MyISAM,InnoDB 數(shù)據(jù)表需要很大的內(nèi)存和存儲空間。將100GB的MyISAM數(shù)據(jù)表轉(zhuǎn)化成InnoDB數(shù)據(jù)表就會表現(xiàn)得令人吃驚的壞。
]]>MySQL索引(摘) http://www.aygfsteel.com/jiangshachina/archive/2007/07/03/127728.htmlSha Jiang Sha Jiang Tue, 03 Jul 2007 00:44:00 GMT http://www.aygfsteel.com/jiangshachina/archive/2007/07/03/127728.html http://www.aygfsteel.com/jiangshachina/comments/127728.html http://www.aygfsteel.com/jiangshachina/archive/2007/07/03/127728.html#Feedback 0 http://www.aygfsteel.com/jiangshachina/comments/commentRss/127728.html http://www.aygfsteel.com/jiangshachina/services/trackbacks/127728.html MySQL索引
本文介紹了數(shù)據(jù)庫索引,及其優(yōu)、缺點。針對MySQL索引的特點、應用進行了詳細的描述。分析了如何避免MySQL無法使用,如何使用EXPLAIN分析查詢語句,如何優(yōu)化MySQL索引的應用。本文摘自《MySQL 5權(quán)威指南》(3rd)的8.9節(jié)。(2007.07.05最后更新)
索引是一種特殊的文件(InnoDB數(shù)據(jù)表上的索引是表空間的一個組成部分),它們包含著對數(shù)據(jù)表里所有記錄的引用指針。
注:[1]索引不是萬能的!索引可以加快數(shù)據(jù)檢索操作,但會使數(shù)據(jù)修改操作變慢。每修改數(shù)據(jù)記錄,索引就必須刷新一次。為了在某種程序上彌補這一缺陷,許多SQL命令都有一個DELAY_KEY_WRITE項。這個選項的作用是暫時制止MySQL在該命令每插入一條新記錄和每修改一條現(xiàn)有之后立刻對索引進行刷新,對索引的刷新將等到全部記錄插入/修改完畢之后再進行。在需要把許多新記錄插入某個數(shù)據(jù)表的場合,DELAY_KEY_WRITE選項的作用將非常明顯。[2]另外,索引還會在硬盤上占用相當大的空間。因此應該只為最經(jīng)常查詢和最經(jīng)常排序的數(shù)據(jù)列建立索引。注意,如果某個數(shù)據(jù)列包含許多重復的內(nèi)容,為它建立索引就沒有太大的實際效果。
從理論上講,完全可以為數(shù)據(jù)表里的每個字段分別建一個索引,但MySQL把同一個數(shù)據(jù)表里的索引總數(shù)限制為16個。
1. InnoDB數(shù)據(jù)表的索引
與MyISAM數(shù)據(jù)表相比,索引對InnoDB數(shù)據(jù)的重要性要大得多。在InnoDB數(shù)據(jù)表上,索引對InnoDB數(shù)據(jù)表的重要性要在得多。在InnoDB數(shù)據(jù)表上,索引不僅會在搜索數(shù)據(jù)記錄時發(fā)揮作用,還是數(shù)據(jù)行級鎖定機制的苊、基礎。"數(shù)據(jù)行級鎖定"的意思是指在事務操作的執(zhí)行過程中鎖定正在被處理的個別記錄,不讓其他用戶進行訪問。這種鎖定將影響到(但不限于)SELECT...LOCK IN SHARE MODE、SELECT...FOR UPDATE命令以及INSERT、UPDATE和DELETE命令。
出于效率方面的考慮,InnoDB數(shù)據(jù)表的數(shù)據(jù)行級鎖定實際發(fā)生在它們的索引上,而不是數(shù)據(jù)表自身上。顯然,數(shù)據(jù)行級鎖定機制只有在有關的數(shù)據(jù)表有一個合適的索引可供鎖定的時候才能發(fā)揮效力。
2. 限制
如果WEHERE子句的查詢條件里有不等號(WHERE coloum != ...),MySQL將無法使用索引。
類似地,如果WHERE子句的查詢條件里使用了函數(shù)(WHERE DAY(column) = ...),MySQL也將無法使用索引。
在JOIN操作中(需要從多個數(shù)據(jù)表提取數(shù)據(jù)時),MySQL只有在主鍵和外鍵的數(shù)據(jù)類型相同時才能使用索引。
如果WHERE子句的查詢條件里使用比較操作符LIKE和REGEXP,MySQL只有在搜索模板的第一個字符不是通配符的情況下才能使用索引。比如說,如果查詢條件是LIKE 'abc%',MySQL將使用索引;如果查詢條件是LIKE '%abc',MySQL將不使用索引。
在ORDER BY操作中,MySQL只有在排序條件不是一個查詢條件表達式的情況下才使用索引。(雖然如此,在涉及多個數(shù)據(jù)表查詢里,即使有索引可用,那些索引在加快ORDER BY方面也沒什么作用)
如果某個數(shù)據(jù)列里包含許多重復的值,就算為它建立了索引也不會有很好的效果。比如說,如果某個數(shù)據(jù)列里包含的凈是些諸如"0/1"或"Y/N"等值,就沒有必要為它創(chuàng)建一個索引。
普通索引、唯一索引和主索引
1. 普通索引
普通索引(由關鍵字KEY或INDEX定義的索引)的唯一任務是加快對數(shù)據(jù)的訪問速度。因此,應該只為那些最經(jīng)常出現(xiàn)在查詢條件(WHERE column = ...)或排序條件(ORDER BY column)中的數(shù)據(jù)列創(chuàng)建索引。只要有可能,就應該選擇一個數(shù)據(jù)最整齊、最緊湊的數(shù)據(jù)列(如一個整數(shù)類型的數(shù)據(jù)列)來創(chuàng)建索引。
2. 唯一索引
普通索引允許被索引的數(shù)據(jù)列包含重復的值。比如說,因為人有可能同名,所以同一個姓名在同一個"員工個人資料"數(shù)據(jù)表里可能出現(xiàn)兩次或更多次。
如果能確定某個數(shù)據(jù)列將只包含彼此各不相同的值,在為這個數(shù)據(jù)列創(chuàng)建索引的時候就應該用關鍵字UNIQUE把它定義為一個唯一索引。這么做的好處:一是簡化了MySQL對這個索引的管理工作,這個索引也因此而變得更有效率;二是MySQL會在有新記錄插入數(shù)據(jù)表時,自動檢查新記錄的這個字段的值是否已經(jīng)在某個記錄的這個字段里出現(xiàn)過了;如果是,MySQL將拒絕插入那條新記錄。也就是說,唯一索引可以保證數(shù)據(jù)記錄的唯一性。事實上,在許多場合,人們創(chuàng)建唯一索引的目的往往不是為了提高訪問速度,而只是為了避免數(shù)據(jù)出現(xiàn)重復。
3. 主索引
在前面已經(jīng)反復多次強調(diào)過:必須為主鍵字段創(chuàng)建一個索引,這個索引就是所謂的"主索引"。主索引與唯一索引的唯一區(qū)別是:前者在定義時使用的關鍵字是PRIMARY而不是UNIQUE。
4. 外鍵索引
如果為某個外鍵字段定義了一個外鍵約束條件,MySQL就會定義一個內(nèi)部索引來幫助自己以最有效率的方式去管理和使用外鍵約束條件。
5. 復合索引
索引可以覆蓋多個數(shù)據(jù)列,如像INDEX(columnA, columnB)索引。這種索引的特點是MySQL可以有選擇地使用一個這樣的索引。如果查詢操作只需要用到columnA數(shù)據(jù)列上的一個索引,就可以使用復合索引INDEX(columnA, columnB)。不過,這種用法僅適用于在復合索引中排列在前的數(shù)據(jù)列組合。比如說,INDEX(A, B, C)可以當做A或(A, B)的索引來使用,但不能當做B、C或(B, C)的索引來使用。
6. 索引的長度
在為CHAR和VARCHAR類型的數(shù)據(jù)列定義索引時,可以把索引的長度限制為一個給定的字符個數(shù)(這個數(shù)字必須小于這個字段所允許的最大字符個數(shù))。這么做的好處是可以生成一個尺寸比較小、檢索速度卻比較快的索引文件。在絕大多數(shù)應用里,數(shù)據(jù)庫中的字符串數(shù)據(jù)大都以各種各樣的名字為主,把索引的長度設置為10~15個字符已經(jīng)足以把搜索范圍縮小到很少的幾條數(shù)據(jù)記錄了。
在為BLOB和TEXT類型的數(shù)據(jù)列創(chuàng)建索引時,必須對索引的長度做出限制;MySQL所允許的最大索引長度是255個字符。
全文索引
文本字段上的普通索引只能加快對出現(xiàn)在字段內(nèi)容最前面的字符串(也就是字段內(nèi)容開頭的字符)進行檢索操作。如果字段里存放的是由幾個、甚至是多個單詞構(gòu)成的較大段文字,普通索引就沒什么作用了。這種檢索往往以LIKE %word%的形式出現(xiàn),這對MySQL來說很復雜,如果需要處理的數(shù)據(jù)量很大,響應時間就會很長。
這類場合正是全文索引(full-text index)可以大顯身手的地方。在生成這種類型的索引時,MySQL將把在文本中出現(xiàn)的所有單詞創(chuàng)建為一份清單,查詢操作將根據(jù)這份清單去檢索有關的數(shù)據(jù)記錄。全文索引即可以隨數(shù)據(jù)表一同創(chuàng)建,也可以等日后有必要時再使用下面這條命令添加:
ALTER TABLE tablename ADD FULLTEXT(column1, column2)
有了全文索引,就可以用SELECT查詢命令去檢索那些包含著一個或多個給定單詞的數(shù)據(jù)記錄了。下面是這類查詢命令的基本語法:
SELECT * FROM tablename
WHERE MATCH(column1, column2) AGAINST('word1', 'word2', 'word3')
上面這條命令將把column1和column2字段里有word1、word2和word3的數(shù)據(jù)記錄全部查詢出來。
注解:InnoDB數(shù)據(jù)表不支持全文索引。
查詢和索引的優(yōu)化
只有當數(shù)據(jù)庫里已經(jīng)有了足夠多的測試數(shù)據(jù)時,它的性能測試結(jié)果才有實際參考價值。如果在測試數(shù)據(jù)庫里只有幾百條數(shù)據(jù)記錄,它們往往在執(zhí)行完第一條查詢命令之后就被全部加載到內(nèi)存里,這將使后續(xù)的查詢命令都執(zhí)行得非常快--不管有沒有使用索引。只有當數(shù)據(jù)庫里的記錄超過了1000條、數(shù)據(jù)總量也超過了MySQL服務器上的內(nèi)存總量時,數(shù)據(jù)庫的性能測試結(jié)果才有意義。
在不確定應該在哪些數(shù)據(jù)列上創(chuàng)建索引的時候,人們從EXPLAIN SELECT命令那里往往可以獲得一些幫助。這其實只是簡單地給一條普通的SELECT命令加一個EXPLAIN關鍵字作為前綴而已。有了這個關鍵字,MySQL將不是去執(zhí)行那條SELECT命令,而是去對它進行分析。MySQL將以表格的形式把查詢的執(zhí)行過程和用到的索引(如果有的話)等信息列出來。
在EXPLAIN命令的輸出結(jié)果里,第1列是從數(shù)據(jù)庫讀取的數(shù)據(jù)表的名字,它們按被讀取的先后順序排列。type列指定了本數(shù)據(jù)表與其它數(shù)據(jù)表之間的關聯(lián)關系(JOIN)。在各種類型的關聯(lián)關系當中,效率最高的是system,然后依次是const、eq_ref、ref、range、index和All(All的意思是:對應于上一級數(shù)據(jù)表里的每一條記錄,這個數(shù)據(jù)表里的所有記錄都必須被讀取一遍--這種情況往往可以用一索引來避免)。
possible_keys數(shù)據(jù)列給出了MySQL在搜索數(shù)據(jù)記錄時可選用的各個索引。key數(shù)據(jù)列是MySQL實際選用的索引,這個索引按字節(jié)計算的長度在key_len數(shù)據(jù)列里給出。比如說,對于一個INTEGER數(shù)據(jù)列的索引,這個字節(jié)長度將是4。如果用到了復合索引,在key_len數(shù)據(jù)列里還可以看到MySQL具體使用了它的哪些部分。作為一般規(guī)律,key_len數(shù)據(jù)列里的值越小越好(意思是更快)。
ref數(shù)據(jù)列給出了關聯(lián)關系中另一個數(shù)據(jù)表里的數(shù)據(jù)列的名字。row數(shù)據(jù)列是MySQL在執(zhí)行這個查詢時預計會從這個數(shù)據(jù)表里讀出的數(shù)據(jù)行的個數(shù)。row數(shù)據(jù)列里的所有數(shù)字的乘積可以讓我們大致了解這個查詢需要處理多少組合。
最后,extra數(shù)據(jù)列提供了與JOIN操作有關的更多信息,比如說,如果MySQL在執(zhí)行這個查詢時必須創(chuàng)建一個臨時數(shù)據(jù)表,就會在extra列看到using temporary字樣。
]]>My.cnf配置選項(摘) http://www.aygfsteel.com/jiangshachina/archive/2007/05/23/119308.htmlSha Jiang Sha Jiang Wed, 23 May 2007 01:26:00 GMT http://www.aygfsteel.com/jiangshachina/archive/2007/05/23/119308.html http://www.aygfsteel.com/jiangshachina/comments/119308.html http://www.aygfsteel.com/jiangshachina/archive/2007/05/23/119308.html#Feedback 2 http://www.aygfsteel.com/jiangshachina/comments/commentRss/119308.html http://www.aygfsteel.com/jiangshachina/services/trackbacks/119308.html My.cnf配置選項
本文中的配置都是從《MySQL5權(quán)威指南(3rd)》中摘抄出來的,個人認為對于使用MySQL十分有用。放在此處方便自己隨時查閱,也希望對其他朋友有所助益。(2007.05.30最后更新)
mysqld程序--目錄和文件
basedir = path 使用給定目錄作為根目錄(安裝目錄)。
character-sets-dir = path 給出存放著字符集的目錄。
datadir = path 從給定目錄讀取數(shù)據(jù)庫文件。
pid-file = filename 為mysqld程序指定一個存放進程ID的文件(僅適用于UNIX/Linux系統(tǒng)); Init-V腳本需要使用這個文件里的進程ID結(jié)束mysqld進程。
socket = filename 為MySQL客戶程序與服務器之間的本地通信指定一個套接字文件(僅適用于UNIX/Linux系統(tǒng); 默認設置一般是/var/lib/mysql/mysql.sock文件)。
在Windows環(huán)境下,如果MySQL客戶與服務器是通過命名管道進行通信的,--sock選項給出的將是該命名管道的名字(默認設置是MySQL)。
lower_case_table_name = 1/0 新目錄和數(shù)據(jù)表的名字是否只允許使用小寫字母; 這個選項在Windows環(huán)境下的默認設置是1(只允許使用小寫字母)。
mysqld程序--語言設置
character-sets-server = name 新數(shù)據(jù)庫或數(shù)據(jù)表的默認字符集。為了與MySQL的早期版本保持兼容,這個字符集也可以用--default-character-set選項給出; 但這個選項已經(jīng)顯得有點過時了。
collation-server = name 新數(shù)據(jù)庫或數(shù)據(jù)表的默認排序方式。
lanuage = name 用指定的語言顯示出錯信息。
mysqld程序--通信、網(wǎng)絡、信息安全
enable-named-pipes 允許Windows 2000/XP環(huán)境下的客戶和服務器使用命名管道(named pipe)進行通信。這個命名管道的默認名字是MySQL,但可以用--socket選項來改變。
local-infile [=0] 允許/禁止使用LOAD DATA LOCAL語句來處理本地文件。
myisam-recover [=opt1, opt2, ...] 在啟動時自動修復所有受損的MyISAM數(shù)據(jù)表。這個選項的可取值有4種:DEFAULT、BACKUP、QUICK和FORCE; 它們與myisamchk程序的同名選項作用相同。
old-passwords 使用MySQL 3.23和4.0版本中的老算法來加密mysql數(shù)據(jù)庫里的密碼(默認使用MySQL 4.1版本開始引入的新加密算法)。
port = n 為MySQL程序指定一個TCP/IP通信端口(通常是3306端口)。
safe-user-create 只有在mysql.user數(shù)據(jù)庫表上擁有INSERT權(quán)限的用戶才能使用GRANT命令; 這是一種雙保險機制(此用戶還必須具備GRANT權(quán)限才能執(zhí)行GRANT命令)。
shared-memory 允許使用內(nèi)存(shared memory)進行通信(僅適用于Windows)。
shared-memory-base-name = name 給共享內(nèi)存塊起一個名字(默認的名字是MySQL)。
skip-grant-tables 不使用mysql數(shù)據(jù)庫里的信息來進行訪問控制(警告:這將允許用戶任何用戶去修改任何數(shù)據(jù)庫)。
skip-host-cache 不使用高速緩存區(qū)來存放主機名和IP地址的對應關系。
skip-name-resovle 不把IP地址解析為主機名; 與訪問控制(mysql.user數(shù)據(jù)表)有關的檢查全部通過IP地址行進。
skip-networking
只允許通過一個套接字文件(Unix/Linux系統(tǒng))或通過命名管道(Windows系統(tǒng))進行本地連接,不允許ICP/IP連接;
這提高了安全性,但阻斷了來自網(wǎng)絡的外部連接和所有的Java客戶程序(Java客戶即使在本地連接里也使用TCP/IP)。
user = name mysqld程序在啟動后將在給定UNIX/Linux賬戶下執(zhí)行; mysqld必須從root賬戶啟動才能在啟動后切換到另一個賬戶下執(zhí)行; mysqld_safe腳本將默認使用--user=mysql選項來啟動mysqld程序。
mysqld程序--內(nèi)存管理、優(yōu)化、查詢緩存區(qū)
bulk_insert_buffer_size = n 為一次插入多條新記錄的INSERT命令分配的緩存區(qū)長度(默認設置是8M)。
key_buffer_size = n 用來存放索引區(qū)塊的RMA值(默認設置是8M)。
join_buffer_size = n 在參加JOIN操作的數(shù)據(jù)列沒有索引時為JOIN操作分配的緩存區(qū)長度(默認設置是128K)。
max_heap_table_size = n HEAP數(shù)據(jù)表的最大長度(默認設置是16M); 超過這個長度的HEAP數(shù)據(jù)表將被存入一個臨時文件而不是駐留在內(nèi)存里。
max_connections = n MySQL服務器同時處理的數(shù)據(jù)庫連接的最大數(shù)量(默認設置是100)。
query_cache_limit = n 允許臨時存放在查詢緩存區(qū)里的查詢結(jié)果的最大長度(默認設置是1M)。
query_cache_size = n 查詢緩存區(qū)的最大長度(默認設置是0,不開辟查詢緩存區(qū))。
query_cache_type = 0/1/2 查詢緩存區(qū)的工作模式:0, 禁用查詢緩存區(qū); 1,啟用查詢緩存區(qū)(默認設置); 2,"按需分配"模式,只響應SELECT SQL_CACHE命令。
read_buffer_size = n 為從數(shù)據(jù)表順序讀取數(shù)據(jù)的讀操作保留的緩存區(qū)的長度(默認設置是128KB); 這個選項的設置值在必要時可以用SQL命令SET SESSION read_buffer_size = n命令加以改變。
read_rnd_buffer_size = n 類似于read_buffer_size選項,但針對的是按某種特定順序(比如使用了ORDER BY子句的查詢)輸出的查詢結(jié)果(默認設置是256K)。
sore_buffer = n 為排序操作分配的緩存區(qū)的長度(默認設置是2M); 如果這個緩存區(qū)太小,則必須創(chuàng)建一個臨時文件來進行排序。
table_cache = n 同時打開的數(shù)據(jù)表的數(shù)量(默認設置是64)。
tmp_table_size = n 臨時HEAP數(shù)據(jù)表的最大長度(默認設置是32M); 超過這個長度的臨時數(shù)據(jù)表將被轉(zhuǎn)換為MyISAM數(shù)據(jù)表并存入一個臨時文件。
mysqld程序--日志
log [= file] 把所有的連接以及所有的SQL命令記入日志(通用查詢?nèi)罩?; 如果沒有給出file參數(shù),MySQL將在數(shù)據(jù)庫目錄里創(chuàng)建一個hostname.log文件作為這種日志文件(hostname是服務器的主機名)。
log-slow-queries
[= file] 把執(zhí)行用時超過long_query_time變量值的查詢命令記入日志(慢查詢?nèi)罩?;
如果沒有給出file參數(shù),MySQL將在數(shù)據(jù)庫目錄里創(chuàng)建一個hostname-slow.log文件作為這種日志文件(hostname是服務器主機
名)。
long_query_time = n 慢查詢的執(zhí)行用時上限(默認設置是10s)。
long_queries_not_using_indexs 把慢查詢以及執(zhí)行時沒有使用索引的查詢命令全都記入日志(其余同--log-slow-queries選項)。
log-bin
[= filename]
把對數(shù)據(jù)進行修改的所有SQL命令(也就是INSERT、UPDATE和DELETE命令)以二進制格式記入日志(二進制變更日志,binary
update log)。這種日志的文件名是filename.n或默認的hostname.n,其中n是一個6位數(shù)字的整數(shù)(日志文件按順序編號)。
log-bin-index = filename 二進制日志功能的索引文件名。在默認情況下,這個索引文件與二進制日志文件的名字相同,但后綴名是.index而不是.nnnnnn。
max_binlog_size = n 二進制日志文件的最大長度(默認設置是1GB)。在前一個二進制日志文件里的信息量超過這個最大長度之前,MySQL服務器會自動提供一個新的二進制日志文件接續(xù)上。
binlog-do-db = dbname 只把給定數(shù)據(jù)庫里的變化情況記入二進制日志文件,其他數(shù)據(jù)庫里的變化情況不記載。如果需要記載多個數(shù)據(jù)庫里的變化情況,就必須在配置文件使用多個本選項來設置,每個數(shù)據(jù)庫一行。
binlog-ignore-db = dbname 不把給定數(shù)據(jù)庫里的變化情況記入二進制日志文件。
sync_binlog = n 每經(jīng)過n次日志寫操作就把日志文件寫入硬盤一次(對日志信息進行一次同步)。n=1是最安全的做法,但效率最低。默認設置是n=0,意思是由操作系統(tǒng)來負責二進制日志文件的同步工作。
log-update [= file] 記載出錯情況的日志文件名(出錯日志)。這種日志功能無法禁用。如果沒有給出file參數(shù),MySQL會使用hostname.err作為種日志文件的名字。
mysqld程序--鏡像(主控鏡像服務器)
server-id = n 給服務器分配一個獨一無二的ID編號; n的取值范圍是1~2的32次方啟用二進制日志功能。
log-bin = name 啟用二進制日志功能。這種日志的文件名是filename.n或默認的hostname.n,其中的n是一個6位數(shù)字的整數(shù)(日志文件順序編號)。
binlog-do/ignore-db = dbname 只把給定數(shù)據(jù)庫里的變化情況記入二進制日志文件/不把給定的數(shù)據(jù)庫里的變化記入二進制日志文件。
mysqld程序--鏡像(從屬鏡像服務器)
server-id = n 給服務器分配一個唯一的ID編號
log-slave-updates 啟用從屬服務器上的日志功能,使這臺計算機可以用來構(gòu)成一個鏡像鏈(A->B->C)。
master-host = hostname 主控服務器的主機名或IP地址。如果從屬服務器上存在mater.info文件(鏡像關系定義文件),它將忽略此選項。
master-user = replicusername 從屬服務器用來連接主控服務器的用戶名。如果從屬服務器上存在mater.info文件,它將忽略此選項。
master-password = passwd 從屬服務器用來連接主控服務器的密碼。如果從屬服務器上存在mater.info文件,它將忽略此選項。
master-port = n 從屬服務器用來連接主控服務器的TCP/IP端口(默認設置是3306端口)。
master-connect-retry = n 如果與主控服務器的連接沒有成功,則等待n秒(s)后再進行管理方式(默認設置是60s)。如果從屬服務器存在mater.info文件,
它將忽略此選項。
master-ssl-xxx = xxx 對主、從服務器之間的SSL通信進行配置。
read-only = 0/1 0: 允許從屬服務器獨立地執(zhí)行SQL命令(默認設置); 1: 從屬服務器只能執(zhí)行來自主控服務器的SQL命令。
read-log-purge = 0/1 1: 把處理完的SQL命令立刻從中繼日志文件里刪除(默認設置); 0: 不把處理完的SQL命令立刻從中繼日志文件里刪除。
replicate-do-table = dbname.tablename 與--replicate-do-table選項的含義和用法相同,但數(shù)據(jù)庫和數(shù)據(jù)庫表名字里允許出現(xiàn)通配符"%"
(例如: test%.%--對名字以"test"開頭的所有數(shù)據(jù)庫里的所以數(shù)據(jù)庫表進行鏡像處理)。
replicate-do-db = name 只對這個數(shù)據(jù)庫進行鏡像處理。
replicate-ignore-table = dbname.tablename 不對這個數(shù)據(jù)表進行鏡像處理。
replicate-wild-ignore-table = dbn.tablen 不對這些數(shù)據(jù)表進行鏡像處理。
replicate-ignore-db = dbname 不對這個數(shù)據(jù)庫進行鏡像處理。
replicate-rewrite-db = db1name > db2name 把主控數(shù)據(jù)庫上的db1name數(shù)據(jù)庫鏡像處理為從屬服務器上的db2name數(shù)據(jù)庫。
report-host = hostname 從屬服務器的主機名; 這項信息只與SHOW SLAVE HOSTS命令有關--主控服務器可以用這條命令生成一份從屬服務器的名單。
slave-compressed-protocol = 1 主、從服務器使用壓縮格式進行通信--如果它們都支持這么做的話。
slave-skip-errors = n1, n2, ...或all 即使發(fā)生出錯代碼為n1、n2等的錯誤,鏡像處理工作也繼續(xù)進行(即不管發(fā)生什么錯誤,鏡像處理工作也繼續(xù)進行)。
如果配置得當,從屬服務器不應該在執(zhí)行SQL命令時發(fā)生錯誤(在主控服務器上執(zhí)行出錯的SQL命令不會被發(fā)送到從屬服務器上做鏡像處理); 如果不使用
slave-skip-errors選項,從屬服務器上的鏡像工作就可能國為發(fā)生錯誤而中斷,中斷后需要有人工參與才能繼續(xù)進行。
mysqld--InnoDB--基本設置、表空間文件
skip-innodb 不加載InnoDB數(shù)據(jù)表驅(qū)動程序--如果用不著InnoDB數(shù)據(jù)表,可以用這個選項節(jié)省一些內(nèi)存。
innodb-file-per-table 為每一個新數(shù)據(jù)表創(chuàng)建一個表空間文件而不是把數(shù)據(jù)表都集中保存在中央表空間里(后者是默認設置)。該選項始見于MySQL 4.1。
innodb-open-file = n InnoDB數(shù)據(jù)表驅(qū)動程序最多可以同時打開的文件數(shù)(默認設置是300)。如果使用了innodb-file-per-table選項并且需要同時打開很多
數(shù)據(jù)表的話,這個數(shù)字很可能需要加大。
innodb_data_home_dir = p InnoDB主目錄,所有與InnoDB數(shù)據(jù)表有關的目錄或文件路徑都相對于這個路徑。在默認的情況下,這個主目錄就是MySQL的數(shù)據(jù)目錄。
innodb_data_file_path = ts 用來容納InnoDB為數(shù)據(jù)表的表空間: 可能涉及一個以上的文件; 每一個表空間文件的最大長度都必須以字節(jié)(B)、兆字節(jié)(MB)或
千兆字節(jié)(GB)為單位給出; 表空間文件的名字必須以分號隔開; 最后一個表空間文件還可以帶一個autoextend屬性和一個最大長度(max:n)。
例如,ibdata1:1G; ibdata2:1G:autoextend:max:2G的意思是: 表空間文件ibdata1的最大長度是1GB,ibdata2的最大長度也是1G,但允許它擴充到2GB。
除文件名外,還可以用硬盤分區(qū)的設置名來定義表空間,此時必須給表空間的最大初始長度值加上newraw關鍵字做后綴,給表空間的最大擴充長度值加上
raw關鍵字做后綴(例如/dev/hdb1:20Gnewraw或/dev/hdb1:20Graw); MySQL 4.0及更高版本的默認設置是ibdata1:10M:autoextend。
innodb_autoextend_increment = n 帶有autoextend屬性的表空間文件每次加大多少兆字節(jié)(默認設置是8MB)。這個屬性不涉及具體的數(shù)據(jù)表文件,那些文件的
增大速度相對是比較小的。
innodb_lock_wait_timeout = n 如果某個事務在等待n秒(s)后還沒有獲得所需要的資源,就使用ROLLBACK命令放棄這個事務。這項設置對于發(fā)現(xiàn)和處理未能被
InnoDB數(shù)據(jù)表驅(qū)動程序識別出來的死鎖條件有著重要的意義。這個選項的默認設置是50s。
innodb_fast_shutdown 0/1 是否以最快的速度關閉InnoDB,默認設置是1,意思是不把緩存在INSERT緩存區(qū)的數(shù)據(jù)寫入數(shù)據(jù)表,那些數(shù)據(jù)將在MySQL服務器下次
啟動時再寫入(這么做沒有什么風險,因為INSERT緩存區(qū)是表空間的一個組成部分,數(shù)據(jù)不會丟失)。把這個選項設置為0反面危險,因為在計算機關閉時,
InnoDB驅(qū)動程序很可能沒有足夠的時間完成它的數(shù)據(jù)同步工作,操作系統(tǒng)也許會在它完成數(shù)據(jù)同步工作之前強行結(jié)束InnoDB,而這會導致數(shù)據(jù)不完整。
mysqld程序--InnoDB--日志
innodb_log_group_home_dir = p 用來存放InnoDB日志文件的目錄路徑(如ib_logfile0、ib_logfile1等)。在默認的情況下,InnoDB驅(qū)動程序?qū)⑹褂肕ySQL數(shù)據(jù)目
錄作為自己保存日志文件的位置。
innodb_log_files_in_group = n 使用多少個日志文件(默認設置是2)。InnoDB數(shù)據(jù)表驅(qū)動程序?qū)⒁暂嗈D(zhuǎn)方式依次填寫這些文件; 當所有的日志文件都寫滿以后,
之后的日志信息將寫入第一個日志文件的最大長度(默認設置是5MB)。這個長度必須以MB(兆字節(jié))或GB(千兆字節(jié))為單位進行設置。
innodb_flush_log_at_trx_commit = 0/1/2 這個選項決定著什么時候把日志信息寫入日志文件以及什么時候把這些文件物理地寫(術(shù)語稱為"同步")到硬盤上。
設置值0的意思是每隔一秒寫一次日志并進行同步,這可以減少硬盤寫操作次數(shù),但可能造成數(shù)據(jù)丟失; 設置值1(設置設置)的意思是在每執(zhí)行完一條COMMIT
命令就寫一次日志并進行同步,這可以防止數(shù)據(jù)丟失,但硬盤寫操作可能會很頻繁; 設置值2是一般折衷的辦法,即每執(zhí)行完一條COMMIT命令寫一次日志,
每隔一秒進行一次同步。
innodb_flush_method = x InnoDB日志文件的同步辦法(僅適用于UNIX/Linux系統(tǒng))。這個選項的可取值有兩種: fdatasync,用fsync()函數(shù)進行同步; O_DSYNC,
用O_SYNC()函數(shù)進行同步。
innodb_log_archive = 1 啟用InnoDB驅(qū)動程序的archive(檔案)日志功能,把日志信息寫入ib_arch_log_n文件。啟用這種日志功能在InnoDB與MySQL一起使用時沒有
多大意義(啟用MySQL服務器的二進制日志功能就足夠用了)。
mysqld程序--InnoDB--緩存區(qū)的設置和優(yōu)化
innodb_log_buffer_pool_size = n 為InnoDB數(shù)據(jù)表及其索引而保留的RAM內(nèi)存量(默認設置是8MB)。這個參數(shù)對速度有著相當大的影響,如果計算機上只運行有
MySQL/InnoDB數(shù)據(jù)庫服務器,就應該把全部內(nèi)存的80%用于這個用途。
innodb_log_buffer_size = n 事務日志文件寫操作緩存區(qū)的最大長度(默認設置是1MB)。
innodb_additional_men_pool_size = n 為用于內(nèi)部管理的各種數(shù)據(jù)結(jié)構(gòu)分配的緩存區(qū)最大長度(默認設置是1MB)。
innodb_file_io_threads = n I/O操作(硬盤寫操作)的最大線程個數(shù)(默認設置是4)。
innodb_thread_concurrency = n InnoDB驅(qū)動程序能夠同時使用的最大線程個數(shù)(默認設置是8)。
mysqld程序--其它選項
bind-address = ipaddr MySQL服務器的IP地址。如果MySQL服務器所在的計算機有多個IP地址,這個選項將非常重要。
default-storage-engine = type 新數(shù)據(jù)表的默認數(shù)據(jù)表類型(默認設置是MyISAM)。這項設置還可以通過--default-table-type選項來設置。
default-timezone = name 為MySQL服務器設置一個地理時區(qū)(如果它與本地計算機的地理時區(qū)不一樣)。
ft_min_word_len = n 全文索引的最小單詞長度工。這個選項的默認設置是4,意思是在創(chuàng)建全文索引時不考慮那些由3個或更少的字符構(gòu)建單詞。
Max-allowed-packet = n 客戶與服務器之間交換的數(shù)據(jù)包的最大長度,這個數(shù)字至少應該大于客戶程序?qū)⒁幚淼淖畲驜LOB塊的長度。這個選項的默認設置是1MB。
Sql-mode = model1, mode2, ... MySQL將運行在哪一種SQL模式下。這個選項的作用是讓MySQL與其他的數(shù)據(jù)庫系統(tǒng)保持最大程度的兼容。這個選項的可取值包括
ansi、db2、oracle、no_zero_date、pipes_as_concat。
注意:如果在配置文件里給出的某個選項是mysqld無法識別的(如,因為犯了一個愚蠢的打字錯誤),MySQL服務器將不啟動。
]]>Apache2+MySQL5+PHP5安裝(原) http://www.aygfsteel.com/jiangshachina/archive/2007/01/02/91369.htmlSha Jiang Sha Jiang Tue, 02 Jan 2007 05:48:00 GMT http://www.aygfsteel.com/jiangshachina/archive/2007/01/02/91369.html http://www.aygfsteel.com/jiangshachina/comments/91369.html http://www.aygfsteel.com/jiangshachina/archive/2007/01/02/91369.html#Feedback 2 http://www.aygfsteel.com/jiangshachina/comments/commentRss/91369.html http://www.aygfsteel.com/jiangshachina/services/trackbacks/91369.html
在Linux上安裝Apache2+MySQL5+PHP5
最近由于工作原因,在RedHat AS 4.0上安裝了Apache2+MySQL5+PHP5。現(xiàn)將安裝使用的命令記錄,以備日后查詢,也希望對其他朋友有幫助。(2007.10.17最后更新)
使用Apache2.0.59,MySQL5.0.16和PHP5.1.4的源代碼包進行安裝。假設這三源代碼安裝包已經(jīng)解壓,且路徑分別為:/home/jiang/tools/httpd-2.0.59 ,
/home/jiang/tools/mysql-5.0.16
和
/home/jiang/tools/php-5.1.4 。而且它們的安裝目標路徑分別為:/usr/local/apache2 ,/usr/local/mysql5 和/usr/local/php5 。
1. 安裝Apache2
進入
/home/jiang/tools/httpd-2.0.59 目錄,執(zhí)行如下命令:
#./configure
--prefix= /usr/local/apache2 -- 設置Apache安裝目標目錄
--enable-so
--enable-vhost-alias
--enable-rewrite
--enable-deflate
--with-mpm=worker
#make
#make install
編輯文件/usr/local/apache2/conf/httpd.conf:
[1]查找元素DocumentRoot ,它的值默認為/usr/local/apache2/htdocs
[2]查找元素DirectoryIndex ,在這一項可以添加實際應用中需要的首頁文件名
啟動/關閉Apache服務器:
進入/usr/local/apache2/bin 目錄,執(zhí)行命令./apachectl start (啟動服務器)或./apachectl stop (關閉服務器)。
2. 安裝MySQL5
#
groupadd
mysql -- 添加組mysql
#
useradd
-g mysql mysql -- 添加用戶mysql,并將它放入組mysql中
進入
/home/jiang/tools/mysql-5.0.16 目錄,執(zhí)行如下命令:
#./configure
--prefix=/path_to_mysql5 -- 設置MySQL安裝目標目錄
--with-charset=utf8 -- 設置默認字符集為utf8
#make
#make install
#./scripts/mysql_install_db -- 初始化MySQL數(shù)據(jù)庫
進入/usr/local 目錄,執(zhí)行如下命令:
#chown -R mysql.mysql mysql5 -- 將/usr/local/mysql5目錄及其子目錄的屬主賦予mysql用戶
在/home/jiang/tools/mysql-5.0.16/support-files
目錄
中選擇一個合適的.cnf 文件放入/etc 目錄中,并將文件修改為my.cnf 。然后編輯該文件,使它更能切合實際的應用。
啟動/關閉服務器:
進入/usr/local/mysql5/bin 目錄,執(zhí)行命令./mysqld_safe -u mysql (用mysql用戶啟動服務器)或./mysqladmin -uroot shutdown (關閉服務器)。
3. 安裝PHP5
進入/home/jiang/tools/php-5.1.4目錄,執(zhí)行如下命令:
#./configure
--prefix=/usr/local/php5
--enable-mbstring -- 根據(jù)應用的需要,添加mbstring模塊
--with-apxs2=/usr/local/apache2/bin/apxs
--with-apache2=/home/jiang/tools/httpd-2.0.59
--with-png
--with-zlib
--with-config-file-path=/usr/local/php5/lib
--with-mysql=/usr/local/mysql5
--with-mysqli=/home/jiang/tools/mysql-5.0.16/scripts/mysql_config -- 根據(jù)應用的需要,添加mysqli模塊
#make
#make install
將/home/jiang/tools/php-5.1.4/php.ini-recommended 文件放入/usr/local/php5/lib 目錄中,并將文件名修改為php.ini 。
查看/usr/local/php5/lib/php.ini 文件,看參數(shù)short_open_tag 的值是否為On 。如果是Off ,請修改為On 。
查看/usr/local/apache2/conf/httpd.conf 文件,看是否存在語句:
LoadModule php5_module modules/libphp5.so
如果存在,即說明apache已經(jīng)成功加載了php模塊;
并添加如下兩條語句(否則PHP頁面可能無法被解析):
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
]]> MySQL Weed(原) http://www.aygfsteel.com/jiangshachina/archive/2006/08/12/63120.htmlSha Jiang Sha Jiang Sat, 12 Aug 2006 01:19:00 GMT http://www.aygfsteel.com/jiangshachina/archive/2006/08/12/63120.html http://www.aygfsteel.com/jiangshachina/comments/63120.html http://www.aygfsteel.com/jiangshachina/archive/2006/08/12/63120.html#Feedback 0 http://www.aygfsteel.com/jiangshachina/comments/commentRss/63120.html http://www.aygfsteel.com/jiangshachina/services/trackbacks/63120.html 閱讀全文 ]]> 在Linux上安裝MySQL Server 5.0(原) http://www.aygfsteel.com/jiangshachina/archive/2006/08/12/63117.htmlSha Jiang Sha Jiang Sat, 12 Aug 2006 01:10:00 GMT http://www.aygfsteel.com/jiangshachina/archive/2006/08/12/63117.html http://www.aygfsteel.com/jiangshachina/comments/63117.html http://www.aygfsteel.com/jiangshachina/archive/2006/08/12/63117.html#Feedback 0 http://www.aygfsteel.com/jiangshachina/comments/commentRss/63117.html http://www.aygfsteel.com/jiangshachina/services/trackbacks/63117.html 閱讀全文 ]]>
主站蜘蛛池模板:
崇明县 |
抚州市 |
纳雍县 |
余庆县 |
大竹县 |
南汇区 |
开远市 |
桐城市 |
南丹县 |
霍州市 |
台安县 |
沿河 |
和静县 |
白山市 |
朝阳市 |
泰来县 |
天气 |
边坝县 |
郑州市 |
绥宁县 |
鄂托克旗 |
恭城 |
永福县 |
塘沽区 |
揭东县 |
太谷县 |
延安市 |
鸡东县 |
井研县 |
女性 |
舞阳县 |
博乐市 |
张北县 |
武穴市 |
海晏县 |
松原市 |
榆社县 |
阳高县 |
丰镇市 |
巴里 |
湘阴县 |