欧美日韩国产影片,成人福利电影精品一区二区在线观看,久久精品日产第一区二区三区精品版
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的數據表引擎提供了一些意見,希望對大家有幫助。(2009.05.31最后更新)
我這個可愛的小哥哥祝可愛的小朋友們節日愉快 ^_^
MyISAM是MySQL的默認存儲引擎,但很多人忘記還有其它的選擇。決定使用哪種(哪些)存儲引擎可能需要些技巧,但評估一下MyISAM是否適合你的需要還是值得的。有一組存儲引擎可用,但我將只關注MyISAM和InnoDB,因為它們被用的最多。
需考慮的問題:
你是否需要外鍵?
你是否需要事務?
你是否需要全文索引?
你的數據訪問(查詢)模式是什么?
你的數據集有多大?
思考上述問題將使你走入正確的方向,但有些例外。如果你使用事務或外鍵,就使用InnoDB。要使用全文索引,你常需選擇MyISAM,因為它內建地支持這一特性;但是,MyISAM難以應對超過200萬的數據行。你可以使用Sphinx以使你的InnoDB表能獲取全文索引,但這需要花費一些時間。
數據集的大小是決定你使用哪種引擎的主要因素。由于InnoDB的事務和崩潰恢復特性,對于較大的數據集,則傾向于該引擎。然而,恢復MyISAM數據表所花費的時間由數據集的大小來衡量,但恢復InnoDB所花費的時間由事務日志的大小來衡量-而你對日志有一定的控制力。例如,相較于恢復 InnoDB數據表所需要的幾分鐘,你可能需要幾小時甚至幾天時間來恢復MyISAM數據表。
你讀/寫數據表的方式可能會極大地影響你所使用的存儲引擎的性能。在MyISAM數據表中執行COUNT()會很快,但對于InnoDB數據表則十分痛苦,最好避免。在InnoDB數據表中查找主鍵極其的快,但要注意到,太長的主鍵會影響到性能。批量插入在MyISAM數據表更快些,但批量更新在 InnoDB中會較快些--特別是當進行并發增加時。
那么你應該選擇哪種引擎呢?如果你工作在一個小項目中,那么MyISAM可能正適合你。甚至在較大環境中使用MyISAM也能獲取很大的成功,但這依具體情況不同而不同。如果你計劃用于非常大的數據集,并且需要事務或外鍵約束,那就應該直接使用InnoDB。但需要記住,相較于MyISAM,InnoDB 數據表需要很大的內存和存儲空間。將100GB的MyISAM數據表轉化成InnoDB數據表就會表現得令人吃驚的壞。
]]>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索引
本文介紹了數據庫索引,及其優、缺點。針對MySQL索引的特點、應用進行了詳細的描述。分析了如何避免MySQL無法使用,如何使用EXPLAIN分析查詢語句,如何優化MySQL索引的應用。本文摘自《MySQL 5權威指南》(3rd)的8.9節。(2007.07.05最后更新)
索引是一種特殊的文件(InnoDB數據表上的索引是表空間的一個組成部分),它們包含著對數據表里所有記錄的引用指針。
注:[1]索引不是萬能的!索引可以加快數據檢索操作,但會使數據修改操作變慢。每修改數據記錄,索引就必須刷新一次。為了在某種程序上彌補這一缺陷,許多SQL命令都有一個DELAY_KEY_WRITE項。這個選項的作用是暫時制止MySQL在該命令每插入一條新記錄和每修改一條現有之后立刻對索引進行刷新,對索引的刷新將等到全部記錄插入/修改完畢之后再進行。在需要把許多新記錄插入某個數據表的場合,DELAY_KEY_WRITE選項的作用將非常明顯。[2]另外,索引還會在硬盤上占用相當大的空間。因此應該只為最經常查詢和最經常排序的數據列建立索引。注意,如果某個數據列包含許多重復的內容,為它建立索引就沒有太大的實際效果。
從理論上講,完全可以為數據表里的每個字段分別建一個索引,但MySQL把同一個數據表里的索引總數限制為16個。
1. InnoDB數據表的索引
與MyISAM數據表相比,索引對InnoDB數據的重要性要大得多。在InnoDB數據表上,索引對InnoDB數據表的重要性要在得多。在InnoDB數據表上,索引不僅會在搜索數據記錄時發揮作用,還是數據行級鎖定機制的苊、基礎。"數據行級鎖定"的意思是指在事務操作的執行過程中鎖定正在被處理的個別記錄,不讓其他用戶進行訪問。這種鎖定將影響到(但不限于)SELECT...LOCK IN SHARE MODE、SELECT...FOR UPDATE命令以及INSERT、UPDATE和DELETE命令。
出于效率方面的考慮,InnoDB數據表的數據行級鎖定實際發生在它們的索引上,而不是數據表自身上。顯然,數據行級鎖定機制只有在有關的數據表有一個合適的索引可供鎖定的時候才能發揮效力。
2. 限制
如果WEHERE子句的查詢條件里有不等號(WHERE coloum != ...),MySQL將無法使用索引。
類似地,如果WHERE子句的查詢條件里使用了函數(WHERE DAY(column) = ...),MySQL也將無法使用索引。
在JOIN操作中(需要從多個數據表提取數據時),MySQL只有在主鍵和外鍵的數據類型相同時才能使用索引。
如果WHERE子句的查詢條件里使用比較操作符LIKE和REGEXP,MySQL只有在搜索模板的第一個字符不是通配符的情況下才能使用索引。比如說,如果查詢條件是LIKE 'abc%',MySQL將使用索引;如果查詢條件是LIKE '%abc',MySQL將不使用索引。
在ORDER BY操作中,MySQL只有在排序條件不是一個查詢條件表達式的情況下才使用索引。(雖然如此,在涉及多個數據表查詢里,即使有索引可用,那些索引在加快ORDER BY方面也沒什么作用)
如果某個數據列里包含許多重復的值,就算為它建立了索引也不會有很好的效果。比如說,如果某個數據列里包含的凈是些諸如"0/1"或"Y/N"等值,就沒有必要為它創建一個索引。
普通索引、唯一索引和主索引
1. 普通索引
普通索引(由關鍵字KEY或INDEX定義的索引)的唯一任務是加快對數據的訪問速度。因此,應該只為那些最經常出現在查詢條件(WHERE column = ...)或排序條件(ORDER BY column)中的數據列創建索引。只要有可能,就應該選擇一個數據最整齊、最緊湊的數據列(如一個整數類型的數據列)來創建索引。
2. 唯一索引
普通索引允許被索引的數據列包含重復的值。比如說,因為人有可能同名,所以同一個姓名在同一個"員工個人資料"數據表里可能出現兩次或更多次。
如果能確定某個數據列將只包含彼此各不相同的值,在為這個數據列創建索引的時候就應該用關鍵字UNIQUE把它定義為一個唯一索引。這么做的好處:一是簡化了MySQL對這個索引的管理工作,這個索引也因此而變得更有效率;二是MySQL會在有新記錄插入數據表時,自動檢查新記錄的這個字段的值是否已經在某個記錄的這個字段里出現過了;如果是,MySQL將拒絕插入那條新記錄。也就是說,唯一索引可以保證數據記錄的唯一性。事實上,在許多場合,人們創建唯一索引的目的往往不是為了提高訪問速度,而只是為了避免數據出現重復。
3. 主索引
在前面已經反復多次強調過:必須為主鍵字段創建一個索引,這個索引就是所謂的"主索引"。主索引與唯一索引的唯一區別是:前者在定義時使用的關鍵字是PRIMARY而不是UNIQUE。
4. 外鍵索引
如果為某個外鍵字段定義了一個外鍵約束條件,MySQL就會定義一個內部索引來幫助自己以最有效率的方式去管理和使用外鍵約束條件。
5. 復合索引
索引可以覆蓋多個數據列,如像INDEX(columnA, columnB)索引。這種索引的特點是MySQL可以有選擇地使用一個這樣的索引。如果查詢操作只需要用到columnA數據列上的一個索引,就可以使用復合索引INDEX(columnA, columnB)。不過,這種用法僅適用于在復合索引中排列在前的數據列組合。比如說,INDEX(A, B, C)可以當做A或(A, B)的索引來使用,但不能當做B、C或(B, C)的索引來使用。
6. 索引的長度
在為CHAR和VARCHAR類型的數據列定義索引時,可以把索引的長度限制為一個給定的字符個數(這個數字必須小于這個字段所允許的最大字符個數)。這么做的好處是可以生成一個尺寸比較小、檢索速度卻比較快的索引文件。在絕大多數應用里,數據庫中的字符串數據大都以各種各樣的名字為主,把索引的長度設置為10~15個字符已經足以把搜索范圍縮小到很少的幾條數據記錄了。
在為BLOB和TEXT類型的數據列創建索引時,必須對索引的長度做出限制;MySQL所允許的最大索引長度是255個字符。
全文索引
文本字段上的普通索引只能加快對出現在字段內容最前面的字符串(也就是字段內容開頭的字符)進行檢索操作。如果字段里存放的是由幾個、甚至是多個單詞構成的較大段文字,普通索引就沒什么作用了。這種檢索往往以LIKE %word%的形式出現,這對MySQL來說很復雜,如果需要處理的數據量很大,響應時間就會很長。
這類場合正是全文索引(full-text index)可以大顯身手的地方。在生成這種類型的索引時,MySQL將把在文本中出現的所有單詞創建為一份清單,查詢操作將根據這份清單去檢索有關的數據記錄。全文索引即可以隨數據表一同創建,也可以等日后有必要時再使用下面這條命令添加:
ALTER TABLE tablename ADD FULLTEXT(column1, column2)
有了全文索引,就可以用SELECT查詢命令去檢索那些包含著一個或多個給定單詞的數據記錄了。下面是這類查詢命令的基本語法:
SELECT * FROM tablename
WHERE MATCH(column1, column2) AGAINST('word1', 'word2', 'word3')
上面這條命令將把column1和column2字段里有word1、word2和word3的數據記錄全部查詢出來。
注解:InnoDB數據表不支持全文索引。
查詢和索引的優化
只有當數據庫里已經有了足夠多的測試數據時,它的性能測試結果才有實際參考價值。如果在測試數據庫里只有幾百條數據記錄,它們往往在執行完第一條查詢命令之后就被全部加載到內存里,這將使后續的查詢命令都執行得非常快--不管有沒有使用索引。只有當數據庫里的記錄超過了1000條、數據總量也超過了MySQL服務器上的內存總量時,數據庫的性能測試結果才有意義。
在不確定應該在哪些數據列上創建索引的時候,人們從EXPLAIN SELECT命令那里往往可以獲得一些幫助。這其實只是簡單地給一條普通的SELECT命令加一個EXPLAIN關鍵字作為前綴而已。有了這個關鍵字,MySQL將不是去執行那條SELECT命令,而是去對它進行分析。MySQL將以表格的形式把查詢的執行過程和用到的索引(如果有的話)等信息列出來。
在EXPLAIN命令的輸出結果里,第1列是從數據庫讀取的數據表的名字,它們按被讀取的先后順序排列。type列指定了本數據表與其它數據表之間的關聯關系(JOIN)。在各種類型的關聯關系當中,效率最高的是system,然后依次是const、eq_ref、ref、range、index和All(All的意思是:對應于上一級數據表里的每一條記錄,這個數據表里的所有記錄都必須被讀取一遍--這種情況往往可以用一索引來避免)。
possible_keys數據列給出了MySQL在搜索數據記錄時可選用的各個索引。key數據列是MySQL實際選用的索引,這個索引按字節計算的長度在key_len數據列里給出。比如說,對于一個INTEGER數據列的索引,這個字節長度將是4。如果用到了復合索引,在key_len數據列里還可以看到MySQL具體使用了它的哪些部分。作為一般規律,key_len數據列里的值越小越好(意思是更快)。
ref數據列給出了關聯關系中另一個數據表里的數據列的名字。row數據列是MySQL在執行這個查詢時預計會從這個數據表里讀出的數據行的個數。row數據列里的所有數字的乘積可以讓我們大致了解這個查詢需要處理多少組合。
最后,extra數據列提供了與JOIN操作有關的更多信息,比如說,如果MySQL在執行這個查詢時必須創建一個臨時數據表,就會在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權威指南(3rd)》中摘抄出來的,個人認為對于使用MySQL十分有用。放在此處方便自己隨時查閱,也希望對其他朋友有所助益。(2007.05.30最后更新)
mysqld程序--目錄和文件
basedir = path 使用給定目錄作為根目錄(安裝目錄)。
character-sets-dir = path 給出存放著字符集的目錄。
datadir = path 從給定目錄讀取數據庫文件。
pid-file = filename 為mysqld程序指定一個存放進程ID的文件(僅適用于UNIX/Linux系統); Init-V腳本需要使用這個文件里的進程ID結束mysqld進程。
socket = filename 為MySQL客戶程序與服務器之間的本地通信指定一個套接字文件(僅適用于UNIX/Linux系統; 默認設置一般是/var/lib/mysql/mysql.sock文件)。
在Windows環境下,如果MySQL客戶與服務器是通過命名管道進行通信的,--sock選項給出的將是該命名管道的名字(默認設置是MySQL)。
lower_case_table_name = 1/0 新目錄和數據表的名字是否只允許使用小寫字母; 這個選項在Windows環境下的默認設置是1(只允許使用小寫字母)。
mysqld程序--語言設置
character-sets-server = name 新數據庫或數據表的默認字符集。為了與MySQL的早期版本保持兼容,這個字符集也可以用--default-character-set選項給出; 但這個選項已經顯得有點過時了。
collation-server = name 新數據庫或數據表的默認排序方式。
lanuage = name 用指定的語言顯示出錯信息。
mysqld程序--通信、網絡、信息安全
enable-named-pipes 允許Windows 2000/XP環境下的客戶和服務器使用命名管道(named pipe)進行通信。這個命名管道的默認名字是MySQL,但可以用--socket選項來改變。
local-infile [=0] 允許/禁止使用LOAD DATA LOCAL語句來處理本地文件。
myisam-recover [=opt1, opt2, ...] 在啟動時自動修復所有受損的MyISAM數據表。這個選項的可取值有4種:DEFAULT、BACKUP、QUICK和FORCE; 它們與myisamchk程序的同名選項作用相同。
old-passwords 使用MySQL 3.23和4.0版本中的老算法來加密mysql數據庫里的密碼(默認使用MySQL 4.1版本開始引入的新加密算法)。
port = n 為MySQL程序指定一個TCP/IP通信端口(通常是3306端口)。
safe-user-create 只有在mysql.user數據庫表上擁有INSERT權限的用戶才能使用GRANT命令; 這是一種雙保險機制(此用戶還必須具備GRANT權限才能執行GRANT命令)。
shared-memory 允許使用內存(shared memory)進行通信(僅適用于Windows)。
shared-memory-base-name = name 給共享內存塊起一個名字(默認的名字是MySQL)。
skip-grant-tables 不使用mysql數據庫里的信息來進行訪問控制(警告:這將允許用戶任何用戶去修改任何數據庫)。
skip-host-cache 不使用高速緩存區來存放主機名和IP地址的對應關系。
skip-name-resovle 不把IP地址解析為主機名; 與訪問控制(mysql.user數據表)有關的檢查全部通過IP地址行進。
skip-networking
只允許通過一個套接字文件(Unix/Linux系統)或通過命名管道(Windows系統)進行本地連接,不允許ICP/IP連接;
這提高了安全性,但阻斷了來自網絡的外部連接和所有的Java客戶程序(Java客戶即使在本地連接里也使用TCP/IP)。
user = name mysqld程序在啟動后將在給定UNIX/Linux賬戶下執行; mysqld必須從root賬戶啟動才能在啟動后切換到另一個賬戶下執行; mysqld_safe腳本將默認使用--user=mysql選項來啟動mysqld程序。
mysqld程序--內存管理、優化、查詢緩存區
bulk_insert_buffer_size = n 為一次插入多條新記錄的INSERT命令分配的緩存區長度(默認設置是8M)。
key_buffer_size = n 用來存放索引區塊的RMA值(默認設置是8M)。
join_buffer_size = n 在參加JOIN操作的數據列沒有索引時為JOIN操作分配的緩存區長度(默認設置是128K)。
max_heap_table_size = n HEAP數據表的最大長度(默認設置是16M); 超過這個長度的HEAP數據表將被存入一個臨時文件而不是駐留在內存里。
max_connections = n MySQL服務器同時處理的數據庫連接的最大數量(默認設置是100)。
query_cache_limit = n 允許臨時存放在查詢緩存區里的查詢結果的最大長度(默認設置是1M)。
query_cache_size = n 查詢緩存區的最大長度(默認設置是0,不開辟查詢緩存區)。
query_cache_type = 0/1/2 查詢緩存區的工作模式:0, 禁用查詢緩存區; 1,啟用查詢緩存區(默認設置); 2,"按需分配"模式,只響應SELECT SQL_CACHE命令。
read_buffer_size = n 為從數據表順序讀取數據的讀操作保留的緩存區的長度(默認設置是128KB); 這個選項的設置值在必要時可以用SQL命令SET SESSION read_buffer_size = n命令加以改變。
read_rnd_buffer_size = n 類似于read_buffer_size選項,但針對的是按某種特定順序(比如使用了ORDER BY子句的查詢)輸出的查詢結果(默認設置是256K)。
sore_buffer = n 為排序操作分配的緩存區的長度(默認設置是2M); 如果這個緩存區太小,則必須創建一個臨時文件來進行排序。
table_cache = n 同時打開的數據表的數量(默認設置是64)。
tmp_table_size = n 臨時HEAP數據表的最大長度(默認設置是32M); 超過這個長度的臨時數據表將被轉換為MyISAM數據表并存入一個臨時文件。
mysqld程序--日志
log [= file] 把所有的連接以及所有的SQL命令記入日志(通用查詢日志); 如果沒有給出file參數,MySQL將在數據庫目錄里創建一個hostname.log文件作為這種日志文件(hostname是服務器的主機名)。
log-slow-queries
[= file] 把執行用時超過long_query_time變量值的查詢命令記入日志(慢查詢日志);
如果沒有給出file參數,MySQL將在數據庫目錄里創建一個hostname-slow.log文件作為這種日志文件(hostname是服務器主機
名)。
long_query_time = n 慢查詢的執行用時上限(默認設置是10s)。
long_queries_not_using_indexs 把慢查詢以及執行時沒有使用索引的查詢命令全都記入日志(其余同--log-slow-queries選項)。
log-bin
[= filename]
把對數據進行修改的所有SQL命令(也就是INSERT、UPDATE和DELETE命令)以二進制格式記入日志(二進制變更日志,binary
update log)。這種日志的文件名是filename.n或默認的hostname.n,其中n是一個6位數字的整數(日志文件按順序編號)。
log-bin-index = filename 二進制日志功能的索引文件名。在默認情況下,這個索引文件與二進制日志文件的名字相同,但后綴名是.index而不是.nnnnnn。
max_binlog_size = n 二進制日志文件的最大長度(默認設置是1GB)。在前一個二進制日志文件里的信息量超過這個最大長度之前,MySQL服務器會自動提供一個新的二進制日志文件接續上。
binlog-do-db = dbname 只把給定數據庫里的變化情況記入二進制日志文件,其他數據庫里的變化情況不記載。如果需要記載多個數據庫里的變化情況,就必須在配置文件使用多個本選項來設置,每個數據庫一行。
binlog-ignore-db = dbname 不把給定數據庫里的變化情況記入二進制日志文件。
sync_binlog = n 每經過n次日志寫操作就把日志文件寫入硬盤一次(對日志信息進行一次同步)。n=1是最安全的做法,但效率最低。默認設置是n=0,意思是由操作系統來負責二進制日志文件的同步工作。
log-update [= file] 記載出錯情況的日志文件名(出錯日志)。這種日志功能無法禁用。如果沒有給出file參數,MySQL會使用hostname.err作為種日志文件的名字。
mysqld程序--鏡像(主控鏡像服務器)
server-id = n 給服務器分配一個獨一無二的ID編號; n的取值范圍是1~2的32次方啟用二進制日志功能。
log-bin = name 啟用二進制日志功能。這種日志的文件名是filename.n或默認的hostname.n,其中的n是一個6位數字的整數(日志文件順序編號)。
binlog-do/ignore-db = dbname 只把給定數據庫里的變化情況記入二進制日志文件/不把給定的數據庫里的變化記入二進制日志文件。
mysqld程序--鏡像(從屬鏡像服務器)
server-id = n 給服務器分配一個唯一的ID編號
log-slave-updates 啟用從屬服務器上的日志功能,使這臺計算機可以用來構成一個鏡像鏈(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: 允許從屬服務器獨立地執行SQL命令(默認設置); 1: 從屬服務器只能執行來自主控服務器的SQL命令。
read-log-purge = 0/1 1: 把處理完的SQL命令立刻從中繼日志文件里刪除(默認設置); 0: 不把處理完的SQL命令立刻從中繼日志文件里刪除。
replicate-do-table = dbname.tablename 與--replicate-do-table選項的含義和用法相同,但數據庫和數據庫表名字里允許出現通配符"%"
(例如: test%.%--對名字以"test"開頭的所有數據庫里的所以數據庫表進行鏡像處理)。
replicate-do-db = name 只對這個數據庫進行鏡像處理。
replicate-ignore-table = dbname.tablename 不對這個數據表進行鏡像處理。
replicate-wild-ignore-table = dbn.tablen 不對這些數據表進行鏡像處理。
replicate-ignore-db = dbname 不對這個數據庫進行鏡像處理。
replicate-rewrite-db = db1name > db2name 把主控數據庫上的db1name數據庫鏡像處理為從屬服務器上的db2name數據庫。
report-host = hostname 從屬服務器的主機名; 這項信息只與SHOW SLAVE HOSTS命令有關--主控服務器可以用這條命令生成一份從屬服務器的名單。
slave-compressed-protocol = 1 主、從服務器使用壓縮格式進行通信--如果它們都支持這么做的話。
slave-skip-errors = n1, n2, ...或all 即使發生出錯代碼為n1、n2等的錯誤,鏡像處理工作也繼續進行(即不管發生什么錯誤,鏡像處理工作也繼續進行)。
如果配置得當,從屬服務器不應該在執行SQL命令時發生錯誤(在主控服務器上執行出錯的SQL命令不會被發送到從屬服務器上做鏡像處理); 如果不使用
slave-skip-errors選項,從屬服務器上的鏡像工作就可能國為發生錯誤而中斷,中斷后需要有人工參與才能繼續進行。
mysqld--InnoDB--基本設置、表空間文件
skip-innodb 不加載InnoDB數據表驅動程序--如果用不著InnoDB數據表,可以用這個選項節省一些內存。
innodb-file-per-table 為每一個新數據表創建一個表空間文件而不是把數據表都集中保存在中央表空間里(后者是默認設置)。該選項始見于MySQL 4.1。
innodb-open-file = n InnoDB數據表驅動程序最多可以同時打開的文件數(默認設置是300)。如果使用了innodb-file-per-table選項并且需要同時打開很多
數據表的話,這個數字很可能需要加大。
innodb_data_home_dir = p InnoDB主目錄,所有與InnoDB數據表有關的目錄或文件路徑都相對于這個路徑。在默認的情況下,這個主目錄就是MySQL的數據目錄。
innodb_data_file_path = ts 用來容納InnoDB為數據表的表空間: 可能涉及一個以上的文件; 每一個表空間文件的最大長度都必須以字節(B)、兆字節(MB)或
千兆字節(GB)為單位給出; 表空間文件的名字必須以分號隔開; 最后一個表空間文件還可以帶一個autoextend屬性和一個最大長度(max:n)。
例如,ibdata1:1G; ibdata2:1G:autoextend:max:2G的意思是: 表空間文件ibdata1的最大長度是1GB,ibdata2的最大長度也是1G,但允許它擴充到2GB。
除文件名外,還可以用硬盤分區的設置名來定義表空間,此時必須給表空間的最大初始長度值加上newraw關鍵字做后綴,給表空間的最大擴充長度值加上
raw關鍵字做后綴(例如/dev/hdb1:20Gnewraw或/dev/hdb1:20Graw); MySQL 4.0及更高版本的默認設置是ibdata1:10M:autoextend。
innodb_autoextend_increment = n 帶有autoextend屬性的表空間文件每次加大多少兆字節(默認設置是8MB)。這個屬性不涉及具體的數據表文件,那些文件的
增大速度相對是比較小的。
innodb_lock_wait_timeout = n 如果某個事務在等待n秒(s)后還沒有獲得所需要的資源,就使用ROLLBACK命令放棄這個事務。這項設置對于發現和處理未能被
InnoDB數據表驅動程序識別出來的死鎖條件有著重要的意義。這個選項的默認設置是50s。
innodb_fast_shutdown 0/1 是否以最快的速度關閉InnoDB,默認設置是1,意思是不把緩存在INSERT緩存區的數據寫入數據表,那些數據將在MySQL服務器下次
啟動時再寫入(這么做沒有什么風險,因為INSERT緩存區是表空間的一個組成部分,數據不會丟失)。把這個選項設置為0反面危險,因為在計算機關閉時,
InnoDB驅動程序很可能沒有足夠的時間完成它的數據同步工作,操作系統也許會在它完成數據同步工作之前強行結束InnoDB,而這會導致數據不完整。
mysqld程序--InnoDB--日志
innodb_log_group_home_dir = p 用來存放InnoDB日志文件的目錄路徑(如ib_logfile0、ib_logfile1等)。在默認的情況下,InnoDB驅動程序將使用MySQL數據目
錄作為自己保存日志文件的位置。
innodb_log_files_in_group = n 使用多少個日志文件(默認設置是2)。InnoDB數據表驅動程序將以輪轉方式依次填寫這些文件; 當所有的日志文件都寫滿以后,
之后的日志信息將寫入第一個日志文件的最大長度(默認設置是5MB)。這個長度必須以MB(兆字節)或GB(千兆字節)為單位進行設置。
innodb_flush_log_at_trx_commit = 0/1/2 這個選項決定著什么時候把日志信息寫入日志文件以及什么時候把這些文件物理地寫(術語稱為"同步")到硬盤上。
設置值0的意思是每隔一秒寫一次日志并進行同步,這可以減少硬盤寫操作次數,但可能造成數據丟失; 設置值1(設置設置)的意思是在每執行完一條COMMIT
命令就寫一次日志并進行同步,這可以防止數據丟失,但硬盤寫操作可能會很頻繁; 設置值2是一般折衷的辦法,即每執行完一條COMMIT命令寫一次日志,
每隔一秒進行一次同步。
innodb_flush_method = x InnoDB日志文件的同步辦法(僅適用于UNIX/Linux系統)。這個選項的可取值有兩種: fdatasync,用fsync()函數進行同步; O_DSYNC,
用O_SYNC()函數進行同步。
innodb_log_archive = 1 啟用InnoDB驅動程序的archive(檔案)日志功能,把日志信息寫入ib_arch_log_n文件。啟用這種日志功能在InnoDB與MySQL一起使用時沒有
多大意義(啟用MySQL服務器的二進制日志功能就足夠用了)。
mysqld程序--InnoDB--緩存區的設置和優化
innodb_log_buffer_pool_size = n 為InnoDB數據表及其索引而保留的RAM內存量(默認設置是8MB)。這個參數對速度有著相當大的影響,如果計算機上只運行有
MySQL/InnoDB數據庫服務器,就應該把全部內存的80%用于這個用途。
innodb_log_buffer_size = n 事務日志文件寫操作緩存區的最大長度(默認設置是1MB)。
innodb_additional_men_pool_size = n 為用于內部管理的各種數據結構分配的緩存區最大長度(默認設置是1MB)。
innodb_file_io_threads = n I/O操作(硬盤寫操作)的最大線程個數(默認設置是4)。
innodb_thread_concurrency = n InnoDB驅動程序能夠同時使用的最大線程個數(默認設置是8)。
mysqld程序--其它選項
bind-address = ipaddr MySQL服務器的IP地址。如果MySQL服務器所在的計算機有多個IP地址,這個選項將非常重要。
default-storage-engine = type 新數據表的默認數據表類型(默認設置是MyISAM)。這項設置還可以通過--default-table-type選項來設置。
default-timezone = name 為MySQL服務器設置一個地理時區(如果它與本地計算機的地理時區不一樣)。
ft_min_word_len = n 全文索引的最小單詞長度工。這個選項的默認設置是4,意思是在創建全文索引時不考慮那些由3個或更少的字符構建單詞。
Max-allowed-packet = n 客戶與服務器之間交換的數據包的最大長度,這個數字至少應該大于客戶程序將要處理的最大BLOB塊的長度。這個選項的默認設置是1MB。
Sql-mode = model1, mode2, ... MySQL將運行在哪一種SQL模式下。這個選項的作用是讓MySQL與其他的數據庫系統保持最大程度的兼容。這個選項的可取值包括
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。現將安裝使用的命令記錄,以備日后查詢,也希望對其他朋友有幫助。(2007.10.17最后更新)
使用Apache2.0.59,MySQL5.0.16和PHP5.1.4的源代碼包進行安裝。假設這三源代碼安裝包已經解壓,且路徑分別為:/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 目錄,執行如下命令:
#./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 目錄,執行命令./apachectl start (啟動服務器)或./apachectl stop (關閉服務器)。
2. 安裝MySQL5
#
groupadd
mysql -- 添加組mysql
#
useradd
-g mysql mysql -- 添加用戶mysql,并將它放入組mysql中
進入
/home/jiang/tools/mysql-5.0.16 目錄,執行如下命令:
#./configure
--prefix=/path_to_mysql5 -- 設置MySQL安裝目標目錄
--with-charset=utf8 -- 設置默認字符集為utf8
#make
#make install
#./scripts/mysql_install_db -- 初始化MySQL數據庫
進入/usr/local 目錄,執行如下命令:
#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 目錄,執行命令./mysqld_safe -u mysql (用mysql用戶啟動服務器)或./mysqladmin -uroot shutdown (關閉服務器)。
3. 安裝PHP5
進入/home/jiang/tools/php-5.1.4目錄,執行如下命令:
#./configure
--prefix=/usr/local/php5
--enable-mbstring -- 根據應用的需要,添加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 -- 根據應用的需要,添加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 文件,看參數short_open_tag 的值是否為On 。如果是Off ,請修改為On 。
查看/usr/local/apache2/conf/httpd.conf 文件,看是否存在語句:
LoadModule php5_module modules/libphp5.so
如果存在,即說明apache已經成功加載了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 閱讀全文 ]]>
主站蜘蛛池模板:
平陆县 |
潼关县 |
广西 |
宜兰县 |
安泽县 |
长乐市 |
宣武区 |
淄博市 |
普宁市 |
达拉特旗 |
长顺县 |
读书 |
阿拉善右旗 |
两当县 |
曲周县 |
凉山 |
北辰区 |
海淀区 |
崇信县 |
巴马 |
古蔺县 |
陇川县 |
新乡市 |
虎林市 |
台中市 |
西充县 |
鲁山县 |
古田县 |
盈江县 |
郸城县 |
麦盖提县 |
龙川县 |
军事 |
平邑县 |
绥德县 |
调兵山市 |
许昌市 |
安宁市 |
大化 |
澳门 |
巢湖市 |