Linux運維工程師工作手冊_第1頁
Linux運維工程師工作手冊_第2頁
Linux運維工程師工作手冊_第3頁
Linux運維工程師工作手冊_第4頁
Linux運維工程師工作手冊_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Linux運維工程師工作手冊釋放內存:syncecho 3 > /proc/sys/vm/drop_caches Linux查看Dell服務器型號命令:dmidecode | grep "Product Name" 查看系統(tǒng)負載:cat /proc/loadavg0.0  0.00 0.00 1/283 10904意思是:前三個是系統(tǒng)負載,1/283中,1代表此時運行隊伍中的進程個數(shù),而283是代表此時的進程總數(shù)1090

2、4到此為止,最后創(chuàng)建的一個進程ID。 系統(tǒng)裝好后,要做的事如下:關閉防火墻Selinux:vim /etc/selinux/config把SELINUX=enforcing改成SELINUX=disabled更改主機名:vim /etc/sysconfig/network修改主機名,不要用localhost添加hosts主機記錄vim /etc/hosts中,在后面,添加自己的主機名 創(chuàng)建0-9 a-z目錄for i in seq 0 9 a.z;do

3、60;mkdir -p $i;done: 測試硬盤性能工具:iozone監(jiān)視服務器每少上下文切換數(shù)次工具:Nmon(很不錯的性能監(jiān)視工具) #占用內存大小前10的進程ps -eo comm,size -sort -size | head -10 #占用cpu使用前10的進程ps -eo comm,pcpu -sort -pcpu | head -10    一、Apa

4、che服務優(yōu)化: 21.配置cronolog進行日志輪詢 22.錯誤頁面優(yōu)雅顯示 23.mod_deflate文件壓縮功能 34.mod_expires緩存功能 45.更改apache的默認用戶 56.worker模式,提升并發(fā)數(shù)(可以達到2000-5000) 57.屏蔽apache版本等敏感信息 68.apache目錄文件權限設置(root,目錄755,文件644) 69.開啟httpd-mpm.conf 增加連接數(shù) 610. apache防盜鏈功能 811.禁止

5、目錄Index 812. 禁止用戶覆蓋(重載) 813.關閉CGI 914.避免使用.htaccess文件(分布式配置文件) 915. apache的安全模塊 916.正確途徑取得源代碼,勤打apache補丁 1017.apache日志授予root 700權限 1018.系統(tǒng)內核參數(shù)優(yōu)化 1019.禁止PHP解析指定站點的目錄 1020.使用tmpfs文件系統(tǒng)替代頻繁訪問的目錄 1121盡可能減少 HTTP 請求數(shù) 1122使用CDN做

6、網站加速 12   查看你的服務器網絡連接狀態(tài)netstat -n | awk '/tcp/ +S$NF END for(a in S) print a, Sa'CLOSED:無連接是活動的或正在進行 LISTEN:服務器在等待進入呼叫 SYN_RECV:一個連接請求已經到達,等待確認 SYN_SENT:應用已經開始,打開一個連接 ESTABLISHED:正常數(shù)據(jù)傳輸狀態(tài) 

7、;FIN_WAIT1:應用說它已經完成 FIN_WAIT2:另一邊已同意釋放 ITMED_WAIT:等待所有分組死掉 CLOSING:兩邊同時嘗試關閉 TIME_WAIT:另一邊已初始化一個釋放 LAST_ACK:等待所有分組死掉 ESTABLISHED的值其實也是當前的并發(fā)數(shù),這個可重點關注下;另外,可關注下TIMEWAIT這項的數(shù)值。Linux下高并發(fā)的Squid服務器,TCP TIME_WAIT套接字數(shù)量經常達到兩、三萬,服務器很容易被拖死。通過修改Linux內核參數(shù),可以減少Squid服務器的TIME_WAIT套接字

8、數(shù)量。 #查看系統(tǒng)本地可用端口極限值cat /proc/sys/net/ipv4/ip_local_port_range   尋找惡意IP并用iptables禁止掉netstat -an| grep :80 | grep -v  |awk ' print $5 ' | sort|awk -F: 'print $1,$4'

9、0;| uniq -c | awk '$1 >50 print $1,$2'  4.5備份單個數(shù)據(jù)庫mysqldump -u 用戶 p密碼 -default-character-set=latin1 數(shù)據(jù)庫名 > 備份文件名(數(shù)據(jù)庫默認編碼是latin1)普通備份:mysqldump -uroot -p'oldboy123' oldboy &g

10、t; /server/bak/oldboy.sql壓縮備份:mysqldump -uroot -p'oldboy123' oldboy |gzip > /server/bak/oldboy.sql.gz設置字符集備份:mysqldump -uroot -p'oldboy123' oldboy -default-character-set=gbk |gzip > /server/bak/oldboy.sql.gz執(zhí)

11、行結果:rootoldboy # mkdir /server/bak -prootoldboy # mysqldump -uroot -p'oldboy123' oldboy > /server/babackup/ bak/   rootoldboy # mysqldump -uroot -p'oldboy123' oldboy > 

12、/server/bak/oldboy.sqlrootoldboy # mysqldump -uroot -p'oldboy123' oldboy |gzip > /server/bak/oldboy.sql.gzrootoldboy # ls -l /server/bak/total 8-rw-r-r- 1 root root 1991 Apr  9 00:51&#

13、160;oldboy.sql-rw-r-r- 1 root root  801 Apr  9 00:51 oldboy.sql.gz4.6 mysqldump在做啥?mysqldump實際上就是把數(shù)據(jù)從mysql庫里以邏輯的sql語句的形式導出。備份的數(shù)據(jù)過濾掉注釋:rootoldboy # egrep -v "*|-|$" /server/bak/oldboy.sqlDROP TABLE IF&

14、#160;EXISTS test;CREATE TABLE test (  id int(4) NOT NULL AUTO_INCREMENT,  name char(20) NOT NULL,  PRIMARY KEY (id) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=gbk;LOCK TABLES&

15、#160;test WRITE;INSERT INTO test VALUES (1,'zhaoyue'),(2,'jesse'),(4,'elain'),(5,'wodi'),(6,'yingsui'),(7,'zhangyang'),(8,'zaixiangpan'),(9,'?'),(10,'鑰佺敺瀛?),(11,'鎴?); <=這里是亂碼,是因為導出時的格式沒加字符集,而系統(tǒng)當前

16、字符集又是zh_cn.gb18030格式,一般恢復到數(shù)據(jù)庫里會正常,只是系統(tǒng)外查看不正常而已。另外insert是批量插入的方式,這樣在恢復時效率很高。UNLOCK TABLES;提示:看到了吧,就是我們曾經插入的表和數(shù)據(jù)。rootoldboy # mysqldump -uroot -p'oldboy123' oldboy -default-character-set=gbk > /server/bak/oldboy-gbk.sqlrootoldboy # egre

17、p -v "*|-|$" /server/bak/oldboy-gbk.sqlDROP TABLE IF EXISTS test;CREATE TABLE test (  id int(4) NOT NULL AUTO_INCREMENT,  name char(20) NOT NULL,  PRIMARY KEY (id)&#

18、160;ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=gbk;LOCK TABLES test WRITE;INSERT INTO test VALUES (1,'zhaoyue'),(2,'jesse'),(4,'elain'),(5,'wodi'),(6,'yingsui'),(7,'zhangyang'),(8,'zaixiangpan&

19、#39;),(9,'?'),(10,'老男孩'),(11,'我'); <=。其他亂碼是當初插入時就有問題的。UNLOCK TABLES;4.7備份多個庫rootoldboy # mysqldump -uroot -p'oldboy123' -B oldboy mysql -default-character-set=gbk > /server/bak/oldboy-gbk-muli.sql提示:-B參

20、數(shù)是關鍵,表示接多個庫。 (生產環(huán)境常用)  -B, -databases     To dump several databases. Note the difference in usage;                   

21、60;  In this case no tables are given. All name arguments are                      regarded as databasenames. '

22、USE db_name;' will be                      included in the output.參數(shù)說明:該參數(shù)用于導出若干個數(shù)據(jù)庫,在備份結果中會加入USE db_name和CREATE DATABASE db_name;  

23、;    -B后的參數(shù)都將被作為數(shù)據(jù)庫名。該參數(shù)比較常用。當-B后的數(shù)據(jù)庫列全時 同 -A參數(shù)。請看-A的說明。4.8備份單個表mysqldump -u 用戶名 -p 數(shù)據(jù)庫名 表名> 備份的文件名mysqldump -u root -p oldboy test> oldboy_oldboy.sql執(zhí)行結果:rootoldboy # mysqldump -uroot 

24、;-p'oldboy123' oldboy test -default-character-set=gbk > /server/bak/oldboy-gbk-single.sql提示:無-B參數(shù),庫oldboy后面就是test表了。4.9備份多個表rootoldboy # mysqldump -uroot -p'oldboy123' oldboy test ett -default-character-set=gbk 

25、> /server/bak/oldboy-gbk-muti-tables.sqlrootoldboy # egrep -v "*|-|$" /server/bak/oldboy-gbk-muti-tables.sqlDROP TABLE IF EXISTS test;CREATE TABLE test (  id int(4) NOT NULL AUTO_INCREMENT,

26、60; name char(20) NOT NULL,  PRIMARY KEY (id) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=gbk;LOCK TABLES test WRITE;INSERT INTO test VALUES (1,'zhaoyue'),(2,'jesse'),(4,'elain'

27、),(5,'wodi'),(6,'yingsui'),(7,'zhangyang'),(8,'zaixiangpan'),(9,'?'),(10,'老男孩'),(11,'我');UNLOCK TABLES;DROP TABLE IF EXISTS ett;CREATE TABLE ett (  id int(11) DEFAULT NULL) ENGINE

28、=MyISAM DEFAULT CHARSET=gbk;LOCK TABLES ett WRITE;UNLOCK TABLES;4.10備份數(shù)據(jù)庫結構(不包含數(shù)據(jù))mysqldump -uroot -d -p'oldboy' oldboy oldboy> oldboy_oldboy.sql-d 只備份表結構rootoldboy # mysqldump -uroot -p'oldboy123'

29、; -d oldboy >/tmp/desc.sql                         rootoldboy # egrep -v "*|-|$" /tmp/desc.sql    

30、0;       DROP TABLE IF EXISTS ett;CREATE TABLE ett (  id int(11) DEFAULT NULL) ENGINE=MyISAM DEFAULT CHARSET=gbk;DROP TABLE IF EXISTS test;CREATE TABLE test

31、0;(  id int(4) NOT NULL AUTO_INCREMENT,  name char(20) NOT NULL,  PRIMARY KEY (id) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=gbk;更多用法可以 執(zhí)行 mysqldump help 查詢。有關mysql和mysqldump同學們要詳

32、細總結。5恢復數(shù)據(jù)庫5.1 source命令恢復進入mysql數(shù)據(jù)庫控制臺,mysql -u root -pmysql>use 數(shù)據(jù)庫然后使用source命令,后面參數(shù)為腳本文件(如這里用到的.sql)mysql>source oldboy_db.sql #這個文件是系統(tǒng)路徑。rootoldboy bak# mysql -uroot -p'oldboy123'Welcome to the MySQL monitor.&

33、#160; Commands end with  or g.skip.Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. mysql> use oldboyDatabase changedmysql>

34、0;show tables;+-+| Tables_in_oldboy |+-+| ett              | test             |+-+2 rows in set (0.00 sec) mys

35、ql> drop tables test;Query OK, 0 rows affected (0.01 sec) mysql> system ls .oldboy-gbk-muli.sql         oldboy-gbk-single.sql  oldboy.sqloldboy-gbk-muti-tables.sql  

36、;oldboy-gbk.sql         oldboy.sql.gzmysql> source ./oldboy.sql <=還是用第一版沒加字符集的備份,就是備份后查看亂碼的備份。Query OK, 0 rows affected (0.00 sec).skip.Query OK, 0 rows affected (0.00 sec)Q.

37、skip.Query OK, 0 rows affected (0.00 sec) mysql> select * from test;+-+-+| id | name        |+-+-+|  1 | zhaoyue     |  2 |

38、0;jesse       |  4 | elain       |  5 | wodi        |  6 | yingsui     |  7 | zhangya

39、ng   |  8 | zaixiangpan |  9 | ?      | 10 | ?         |<=亂碼| 11 | ?          

40、0;|+-+-+10 rows in set (0.00 sec) mysql> set names gbk;Query OK, 0 rows affected (0.00 sec) mysql> select * from test;+-+-+| id | name       

41、60;|+-+-+|  1 | zhaoyue     |  2 | jesse       |  4 | elain       |  5 | wodi        

42、|  6 | yingsui     |  7 | zhangyang   |  8 | zaixiangpan |  9 | ?      | 10 | 老男孩      | <=仍

43、然是正常的,就是說備份不加字符集導出,將來恢復不會影響恢復的數(shù)據(jù),但是備份后查看文件會亂碼。| 11 | 我          |+-+-+10 rows in set (0.00 sec)5.2 mysql命令恢復(標準)mysql -u oldboy -p'oldboy' oldboy < oldboy.sqlmysql&

44、gt; system mysql -uroot -p'oldboy123' oldboy < oldboy-gbk.sql <=導入的是備份時加字符集的版本。mysql> select * from test;+-+-+| id | name        |+-+-+|  1 | zhaoyu

45、e     |  2 | jesse       |  4 | elain       |  5 | wodi        |  6 | yingsui &#

46、160;   |  7 | zhangyang   |  8 | zaixiangpan |  9 | ?      | 10 | 老男孩      |<=因為上文source導入時已經set names gbk了, 所以此

47、處不是亂碼。| 11 | 我          |+-+-+10 rows in set (0.00 sec)     MyISAM引擎?zhèn)浞?#160;   由于MyISAM引擎為表級鎖,因此,在備份時需要防止在備份期間數(shù)據(jù)寫入而導致不一致,所以,在備份時使用-lock-all-tables加上讀鎖mysqldump

48、0;-A -F -B -lock-all-tables |gzip >/data/backup/$(date +%F).tar.gz特別提示:有關MyISAM和InnoDB引擎的差別和在工作中如何選擇,在前面的文章已經詳細講解過了,這里就不在講了。 InnoDB引擎?zhèn)浞軮nnoDB引擎為行鎖,因此,備份時可以不對數(shù)據(jù)庫加鎖的操作,可以加選項-single-transaction進行備份:mysqldump -A -F -B -single-transaction&#

49、160;|gzip >/data/backup/$(date +%F).tar.gz特別注意:1)-single-transaction僅適用于InnoDB引擎。 生產環(huán)境mysqldump備份命令mysqldump u root p S /data/3306/mysql.sock default-character-set=gbk single-transaction F B oldboy|gzip > /server/backup

50、/mysql_$(date +%F).sql.gz :注-F:刷新bin-log參數(shù),數(shù)據(jù)庫備份完以后,會刷新bin-log 增量備份:更新bin-log:mysqladmin uroot p S /data/3306/mysql.sock flush-logs如生成mysql-bin.000004文件把生成的最新mysql-bin.000004文件,CP到/var/backup/把二進制的日志生成 sql語句:mysqlbinlog mysql-bin.000004>bin04.sql如

51、果有多個庫,我們應該用-d來指定恢復單個庫mysqlbinlog mysql-bin.000004 d oldboy >binlog.sql  (當然對于庫也要分庫備,否則恢復還是麻煩)還原數(shù)據(jù):先還原全備,再還原增備先還原全備:mysql u root p  <mysqlfile.sql還原增備:mysql u root p  <binlog.sql(恢復增備的時候,需要把誤操作的語句刪掉后,再還原,否則,還原后,還

52、是會和誤操作后一樣) 基于時間點的增量恢復mysqlbinlog mysql-bin.000004 start-datetime=2011-03-19 02:58:54stop-datetime=2011-03-19 03:22:44 r time.sql上面語句將顯示2011.03-19 02:58:54-2011-03-19 03:22:44時間段的binlog,并輸出到time.sql拽定開始時間到文件結束mysqlbinlog mysql-bin.000004 start-da

53、tetime= 2011-03-19 02:58:54 d oldboy r time.sql這個語句只有開始時間,那么就是從2011-03-19 02:58:54時刻到日志結尾,lodboy數(shù)據(jù)庫的binlog輸出到time.sql 基于位置點的增量恢復指定開始位置和結束位置mysqlbinlog mysql-bin.000004 start-position=510 stop-position=1312 r pos.sql輸出初始位置510,結束位置1312的所

54、有binlog日志到pos.sql注意:結尾的日志點細弱特殊不會被包含。即輸出1312pos以前的binlog。指定開始位置到文件結束mysqlbinlog mysql-bin.000004 start-position=510 r pos510-end.sql輸出初始位置510,結束位置到文件結尾的所有binlog到pos510-end.sql。當然,你也可以指定庫名輸出binlog。如:mysqlbinlog mysql-bin.000004 -start-position=510 r pos510-end-o

55、ldboy.sql d oldboy從文件開頭到指定結束位置mysqlbinlog mysql-bin.000004 -stop-position=954 -r start-954.sql輸出從文件開始位置,到954位置截止的所有binlog掌握和查找打開的文件lsof(列出打開的文件)實用程序會顯示打開的文件名。其選項僅顯示某些進程,只有一個進程的某些文件描述符,或只有某些網絡連接(網絡連接使用文件描述符,就像普通文件一樣,lsof 也顯示這些)。使用 ps  ef 確定了可疑進程后

56、,輸入以下命令: # lsof -s -p pid服務器最大設置的連接數(shù):151mysql> show variables like'max_connections'+-+-+| Variable_name   | Value |+-+-+| max_connections | 151   |+-+-+1 row in set (0.0

57、0 sec) 服務器響應的最大連接數(shù):152mysql> show global status like 'Max_used_connections'+-+-+| Variable_name        | Value |+-+-+| Max_used_connections | 152   |+-+-+1 row 

58、;in set (0.00 sec)查看服務器key_buffer_size數(shù)值:402653184mysql> show variables like 'key_buffer_size'+-+-+| Variable_name   | Value     |+-+-+| key_buffer_size | 402653184 |+-+-+1 row

59、60;in set (0.00 sec) 查看服務器現(xiàn)在使用的key_buffer_size使用情況:key_read_requests: 879600044key-reads: 830525mysql> show global status like 'key_read%'+-+-+| Variable_name     | Value     

60、;|+-+-+| Key_read_requests | 879600044 | Key_reads         | 830525    |+-+-+2 rows in set (0.00 sec)計算索引未命中的概率:key_cache_miss_rate =  key_reads / key_read

61、_requests * 100%達到0.1%以下(即每1000個請求有一個直接讀硬盤)以下都很好,如果key_cache_miss_rae在0.01%以下的話,則說明key_buffer_size分配得過多,可以適當減少。  Key_blocks_unused表示未使用的緩存簇數(shù),Key_blocks_used表示曾經用到的最大的blocks數(shù),比如這臺服務器,所有的緩存都用到了,要么增加key_buffer_size,要么就是過度索引,把緩存占滿了。比較理想的設置是:key_blocks_used / ( key_bloc

62、ks_unused + key_blocks_used ) * 100 % = 80% mysql> show global status like 'key_blocks_u%'+-+-+| Variable_name     | Value  |+-+-+| Key_blocks_unused | 317003&

63、#160;| Key_blocks_used   | 6439   |+-+-+2 rows in set (0.00 sec)  臨時表:當執(zhí)行語句時,關于已經被創(chuàng)造了的隱含臨時表的數(shù)量,我們可以用如下命令查詢其具體情況:mysql> show global status like 'created_tmp%'+-+-+| Variable_name &

64、#160;         | Value  |+-+-+| Created_tmp_disk_tables | 343326 | Created_tmp_files       | 172    | Created_tmp_tables     &

65、#160;| 675795 |+-+-+3 rows in set (0.00 sec) 每次創(chuàng)建臨時表時,created_tmp_tables都會增加,如果是在磁盤上創(chuàng)建臨時表,created_tmp_disk_tables也會增加。created_tem_files表示MYSQL服務創(chuàng)建的臨時文件數(shù),比較理想的配置是:Created_Tmp_disk_tables / Created_tmp_tables * 100% <= 25%比如上面服務器

66、Created_Tmp_disk_tables / Created_tmp_tables * 100% = 50%,比較差了。我們再看一下MYSQL服務器對臨時表的配置:mysql> show variables where Variable_name in ('tmp_table_size','max_heap_table_size');+-+-+| Variable_name    &

67、#160;  | Value    |+-+-+| max_heap_table_size | 16777216 | tmp_table_size      | 16777216 |+-+-+2 rows in set (0.00 sec)只有16M以下的臨時表才能全部放在內存中,超過的就會用到硬盤臨時表。   打開表

68、的情況Open_tables表示打開表的數(shù)量,Opend_tables表示打開過的表數(shù)量,我們可以用如下命令查看其具體情況:mysql> show global status like 'open%tables%'+-+-+| Variable_name | Value  |+-+-+| Open_tables   | 512    | Opened_tables 

69、| 234200 |+-+-+2 rows in set (0.00 sec)如果Opened_tables數(shù)量過大,說明配置中tables_caceh(MYSQL 5.1.3 之后這個值叫做table_open_cache)的值可能太小。我們查詢一下服務器table_cache值:mysql> show variables like 'table_open_cache'      &

70、#160;   +-+-+| Variable_name    | Value |+-+-+| table_open_cache | 614   |+-+-+1 row in set (0.00 sec)比較合適的值為:Open_tables / Opened_tables * 100% >= 85%Open_tables

71、 / table_open_cache * 100% <= 95%  進程使用情況如果我們在MYSQL服務器的配置文件中設置了thread-cache_size,當客戶端斷開之時,服務器處理此客戶請求的線程將會緩存起來以響應下一個客戶而不是銷毀(前提是緩存數(shù)未達上限)。Threads_created表示創(chuàng)建過的線程數(shù),我們可以用如下命令查看:mysql> show global status like 'Thread%'+-+-+|

72、60;Variable_name     | Value |+-+-+| Threads_cached    | 7     | Threads_connected | 2     | Threads_created   | 2124  | Threads_r

73、unning   | 2     |+-+-+4 rows in set (0.00 sec)如果發(fā)現(xiàn)Threads_created的值過大的話,表明MYSQL服務器一直在創(chuàng)建線程,這也是比較耗費資源的,可以適當增大配置文件中的thread_cache_size的值。查詢服務器thread_cahce_size配置,如下所示:mysql> show variables like 'thread_cach

74、e_size'+-+-+| Variable_name     | Value |+-+-+| thread_cache_size | 8     |+-+-+1 row in set (0.00 sec)  查詢緩存它涉及的主要有兩個參數(shù),query_cache_size是設置MYSQL的Query_Cache大小,query_cache_size是設置使用

75、查詢緩存的類型,我們可以用如下命令查看其具體情況:mysql> show global status like 'qcache%'+-+-+| Variable_name           | Value    |+-+-+| Qcache_free_blocks      |

76、0;130      | Qcache_free_memory      | 31557680 | Qcache_hits             | 15838885 | Qcache_inserts      

77、60;   | 2391041  | Qcache_lowmem_prunes    | 0        | | Qcache_not_cached       | 671718   | Qcache_queries_in_cache | 

78、;676      | Qcache_total_blocks     | 1798     |+-+-+8 rows in set (0.00 sec) 我們再查詢一下服務器上關于query-cache的配置命令如下:mysql> show variables like 'query_cache%

79、9;+-+-+| Variable_name                | Value    |+-+-+| query_cache_limit            | 1048576  | query_

80、cache_min_res_unit     | 4096     | query_cache_size             | 33554432 | query_cache_type           

81、  | ON       | query_cache_wlock_invalidate | OFF      |+-+-+5 rows in set (0.00 sec)   排序使用情況它表示系統(tǒng)中對數(shù)據(jù)進行排序時所使用的Buffer,我們可以用如下命令查看:mysql> show global

82、60;status like 'sort%'+-+-+| Variable_name     | Value     |+-+-+| Sort_merge_passes | 84        | Sort_range        |

83、0;393425    | Sort_rows         | 751581502 | Sort_scan         | 324383    |+-+-+4 rows in set (0.00 sec) Sort_mer

84、ge_passes包括如下步驟:MYSQL首先會嘗試在內存中做排序,使用的內存大小由系統(tǒng)變量sort_buffer_size來決定,如果它不夠大則把所有的記錄都讀到內存中,而MYSQl則會把每次在內存中排序的結果存到臨時文件中,等 MYSQL找到所有記錄之后,再把臨時文件中的記錄做一次排序。這次再排序就會增加sort_merge_passes。實際上,MYSQL會用另一個臨時文件來存儲再次排序的結果,所以我們通常會看到sort_merge_passes增加的數(shù)值是建臨時文件數(shù)的兩倍。因為用到了臨時文件,所以速度可能會比較慢,增大sort_buffer_size會減少sort_merge_passes和創(chuàng)建臨時文件的次數(shù),但盲目地增加sort_buffer_size并不一定能提高速度。   文件打開數(shù)(open_files)我們在處理MYSQL故

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論