Ⅰ mysql中哪種日誌不能直接cat或more
前言
MySQL中有以下日誌文件,分別是:
1:重做日誌(redo log)
2:回滾日誌(undo log)
3:二進制日誌(binlog)
4:錯誤日誌(errorlog)
5:慢查詢日誌(slow query log)
6:一般查詢日誌(general log)
7:中繼日誌(relay log)。
其中重做日誌和回滾日誌與事務操作息息相關,二進制日誌也與事務操作有一定的關系,這三種日誌,對理解MySQL中的事務操作有著重要的意義。
一、重做日誌(redo log)
作用:
確保事務的持久性。redo日誌記錄事務執行後的狀態,用來恢復未寫入data file的已成功事務更新的數據。防止在發生故障的時間點,尚有臟頁未寫入磁碟,在重啟mysql服務的時候,根據redo log進行重做,從而達到事務的持久性這一特性。
內容:
物理格式的日誌,記錄的是物理數據頁面的修改的信息,其redo log是順序寫入redo log file的物理文件中去的。
什麼時候產生:
事務開始之後就產生redo log,redo log的落盤並不是隨著事務的提交才寫入的,而是在事務的執行過程中,便開始寫入redo log文件中。
什麼時候釋放:
當對應事務的臟頁寫入到磁碟之後,redo log的使命也就完成了,重做日誌佔用的空間就可以重用(被覆蓋)。
對應的物理文件:
默認情況下,對應的物理文件位於資料庫的data目錄下的ib_logfile1&ib_logfile2
innodb_log_group_home_dir 指定日誌文件組所在的路徑,默認./ ,表示在資料庫的數據目錄下。
innodb_log_files_in_group 指定重做日誌文件組中文件的數量,默認2
關於文件的大小和數量,由以下兩個參數配置:
innodb_log_file_size 重做日誌文件的大小。
innodb_mirrored_log_groups 指定了日誌鏡像文件組的數量,默認1
其他:
很重要一點,redo log是什麼時候寫盤的?前面說了是在事物開始之後逐步寫盤的。
之所以說重做日誌是在事務開始之後逐步寫入重做日誌文件,而不一定是事務提交才寫入重做日誌緩存,原因就是,重做日誌有一個緩存區Innodb_log_buffer,Innodb_log_buffer的默認大小為8M(這里設置的16M),Innodb存儲引擎先將重做日誌寫入innodb_log_buffer中。
然後會通過以下三種方式將innodb日誌緩沖區的日誌刷新到磁碟
Master Thread 每秒一次執行刷新Innodb_log_buffer到重做日誌文件。
每個事務提交時會將重做日誌刷新到重做日誌文件。
當重做日誌緩存可用空間 少於一半時,重做日誌緩存被刷新到重做日誌文件
由此可以看出,重做日誌通過不止一種方式寫入到磁碟,尤其是對於第一種方式,Innodb_log_buffer到重做日誌文件是Master Thread線程的定時任務。
因此重做日誌的寫盤,並不一定是隨著事務的提交才寫入重做日誌文件的,而是隨著事務的開始,逐步開始的。
另外引用《MySQL技術內幕 Innodb 存儲引擎》(page37)上的原話:
即使某個事務還沒有提交,Innodb存儲引擎仍然每秒會將重做日誌緩存刷新到重做日誌文件。
這一點是必須要知道的,因為這可以很好地解釋再大的事務的提交(commit)的時間也是很短暫的。
二、回滾日誌(undo log)
作用:
保證數據的原子性,保存了事務發生之前的數據的一個版本,可以用於回滾,同時可以提供多版本並發控制下的讀(MVCC),也即非鎖定讀
內容:
邏輯格式的日誌,在執行undo的時候,僅僅是將數據從邏輯上恢復至事務之前的狀態,而不是從物理頁面上操作實現的,這一點是不同於redo log的。
什麼時候產生:
事務開始之前,將當前是的版本生成undo log,undo 也會產生 redo 來保證undo log的可靠性
什麼時候釋放:
當事務提交之後,undo log並不能立馬被刪除,而是放入待清理的鏈表,由purge線程判斷是否由其他事務在使用undo段中表的上一個事務之前的版本信息,決定是否可以清理undo log的日誌空間。
對應的物理文件:
MySQL5.6之前,undo表空間位於共享表空間的回滾段中,共享表空間的默認的名稱是ibdata,位於數據文件目錄中。
MySQL5.6之後,undo表空間可以配置成獨立的文件,但是提前需要在配置文件中配置,完成資料庫初始化後生效且不可改變undo log文件的個數
如果初始化資料庫之前沒有進行相關配置,那麼就無法配置成獨立的表空間了。
關於MySQL5.7之後的獨立undo 表空間配置參數如下:
innodb_undo_directory = /data/undospace/ –undo獨立表空間的存放目錄 innodb_undo_logs = 128 –回滾段為128KB innodb_undo_tablespaces = 4 –指定有4個undo log文件
如果undo使用的共享表空間,這個共享表空間中又不僅僅是存儲了undo的信息,共享表空間的默認為與MySQL的數據目錄下面,其屬性由參數innodb_data_file_path配置。
其他:
undo是在事務開始之前保存的被修改數據的一個版本,產生undo日誌的時候,同樣會伴隨類似於保護事務持久化機制的redolog的產生。
默認情況下undo文件是保持在共享表空間的,也即ibdatafile文件中,當資料庫中發生一些大的事務性操作的時候,要生成大量的undo信息,全部保存在共享表空間中的。
因此共享表空間可能會變的很大,默認情況下,也就是undo 日誌使用共享表空間的時候,被「撐大」的共享表空間是不會也不能自動收縮的。
因此,mysql5.7之後的「獨立undo 表空間」的配置就顯得很有必要了。
三、二進制日誌(binlog):
作用:
用於復制,在主從復制中,從庫利用主庫上的binlog進行重播,實現主從同步。
用於資料庫的基於時間點的還原。
內容:
邏輯格式的日誌,可以簡單認為就是執行過的事務中的sql語句。
但又不完全是sql語句這么簡單,而是包括了執行的sql語句(增刪改)反向的信息,也就意味著delete對應著delete本身和其反向的insert;update對應著update執行前後的版本的信息;insert對應著delete和insert本身的信息。
在使用mysqlbinlog解析binlog之後一些都會真相大白。
因此可以基於binlog做到類似於oracle的閃回功能,其實都是依賴於binlog中的日誌記錄。
什麼時候產生:
事務提交的時候,一次性將事務中的sql語句(一個事物可能對應多個sql語句)按照一定的格式記錄到binlog中。
這里與redo log很明顯的差異就是redo log並不一定是在事務提交的時候刷新到磁碟,redo log是在事務開始之後就開始逐步寫入磁碟。
因此對於事務的提交,即便是較大的事務,提交(commit)都是很快的,但是在開啟了bin_log的情況下,對於較大事務的提交,可能會變得比較慢一些。
這是因為binlog是在事務提交的時候一次性寫入的造成的,這些可以通過測試驗證。
什麼時候釋放:
binlog的默認是保持時間由參數expire_logs_days配置,也就是說對於非活動的日誌文件,在生成時間超過expire_logs_days配置的天數之後,會被自動刪除。
對應的物理文件:
配置文件的路徑為log_bin_basename,binlog日誌文件按照指定大小,當日誌文件達到指定的最大的大小之後,進行滾動更新,生成新的日誌文件。
對於每個binlog日誌文件,通過一個統一的index文件來組織。
其他:
二進制日誌的作用之一是還原資料庫的,這與redo log很類似,很多人混淆過,但是兩者有本質的不同
作用不同:redo log是保證事務的持久性的,是事務層面的,binlog作為還原的功能,是資料庫層面的(當然也可以精確到事務層面的),雖然都有還原的意思,但是其保護數據的層次是不一樣的。
內容不同:redo log是物理日誌,是數據頁面的修改之後的物理記錄,binlog是邏輯日誌,可以簡單認為記錄的就是sql語句
另外,兩者日誌產生的時間,可以釋放的時間,在可釋放的情況下清理機制,都是完全不同的。
恢復數據時候的效率,基於物理日誌的redo log恢復數據的效率要高於語句邏輯日誌的binlog
關於事務提交時,redo log和binlog的寫入順序,為了保證主從復制時候的主從一致(當然也包括使用binlog進行基於時間點還原的情況),是要嚴格一致的,MySQL通過兩階段提交過程來完成事務的一致性的,也即redo log和binlog的一致性的,理論上是先寫redo log,再寫binlog,兩個日誌都提交成功(刷入磁碟),事務才算真正的完成。
四、錯誤日誌
錯誤日誌記錄著mysqld啟動和停止,以及伺服器在運行過程中發生的錯誤的相關信息。在默認情況下,系統記錄錯誤日誌的功能是關閉的,錯誤信息被輸出到標准錯誤輸出。
指定日誌路徑兩種方法:
編輯my.cnf 寫入 log-error=[path]
通過命令參數錯誤日誌 mysqld_safe –user=mysql –log-error=[path] &
顯示錯誤日誌的命令(如下圖所示)
Ⅱ 何為虛擬內存有何作用設定大小是多少最好
虛擬內存的合理設置
現在內存的價錢越來越便宜,很多新裝機的朋友都已經在使用1GB的內存,而還有很多人也在給老電腦的內存升級。在升級了物理內存之後,如何有效設置虛擬內存才能獲得最大限度的性能提升?網上流傳的一些優化虛擬內存的方法真的有效嗎?這些就是本文將要討論的內容。
網上有很多廣泛流傳的關於虛擬內存優化的技巧,其實很多都是經不起推敲的。大家一起來看看吧。
觀點一:對於擁有大容量物理內存的用戶,可以完全禁用虛擬內存。要徹底了解這個問題,首先得明白什麼是虛擬內存,以及虛擬內存有什麼作用。在早期,因為內存價格非常昂貴,因此一般電腦上都不會配置太多,那麼有時候如果操作系統和應用程序需要的內存數量超過了計算機中安裝的物理內存數量,操作系統就會暫時將不需要訪問的數據通過一種叫做「分頁」的操作寫入到硬碟上一個特殊的文件中,從而給需要立刻使用內存的程序和數據釋放內存。這個位於硬碟上的特殊文件就是分頁文件(也就是虛擬內存文件或叫做交換文件)。對於Windows 2000/XP/2003操作系統,分頁文件名為pagefile.sys,默認情況下位於操作系統所在分區的根目錄下。
既然知道了虛擬內存的由來和作用,那麼持這種理論的人認為,硬碟和內存的速度具有天壤之別,如果禁用了虛擬內存,系統就不需要花時間將內存中的數據分頁到硬碟上,從而提高了系統的運行效率。然而根據傳統的設計,Windows 的許多核心功能都需要使用分頁文件,而如果你禁用了所有分頁文件,有些第三方的應用軟體都可能會遇到內存不足的錯誤。其實在不需要的時候,Windows並不會使用分頁文件,因此這樣調整系統你並不能獲得任何性能上的提高。
觀點二:對於虛擬內存,建議的設置是物理內存數量的1.5-2倍(分別為虛擬內存的最小值和最大值)。在討論這個問題之前首先看兩種情況:有兩台電腦,除了內存,其他所有配置都相同。電腦A擁有128MB內存,電腦B擁有1GB內存,這兩台電腦都運行Windows XP操作系統。按照這個觀點的方法設置,電腦A的虛擬內存將會設置為192MB-256MB,而電腦B的虛擬內存將會設置為1.5GB-2GB。那麼實際使用中呢,電腦A很可能會在運行大型軟體或者游戲的時候產生虛擬內存不足的問題,而電腦B則會因為設置了如此大的分頁文件而導致硬碟空間的浪費。如何根據實際情況設置虛擬內存,這個我們會在下文中介紹。
觀點三:我們可以使用內存釋放軟體將運行中的程序佔用的內存釋放出來,提高系統運行效率。在否定這個觀點之前我們首先要明白一件事,任何程序,只要被執行,就會佔用一定的內存空間(具體佔用多少內存則取決於程序自己的體積以及載入的數據文件的大小),那麼這種所謂的內存釋放軟體是如何生效的?軟體並沒有退出,從哪裡釋放內存呢?原來這種「優化」軟體會把程序佔用的內存全部分頁到虛擬內存中,從而造成了物理內存被釋放的「假象」。
安裝有這類軟體的朋友可以試試看,打開Windows任務管理器,打開進程選項卡,接著在「查看」菜單下選擇「選擇列」命令,在隨後出現的選擇列對話框中選中「虛擬內存大小」這一選項。接著你的任務管理器將會變成類似圖一的樣子。
記住幾個佔用內存比較多的進程各自使用的內存數和虛擬內存數,然後使用內存釋放軟體進行釋放。本文將會使用微軟發布的Windows Server 2003 Resource Kit工具empty.exe,該工具前段時間在網上非常風光,很多人都宣稱具有釋放空閑內存的作用(雖然還有其他釋放內存的工具,不過原理上都是一樣的)。運行「empty *.*」,可以看到,在短時間內,之前佔用了大量物理內存的進程佔用的物理內存數量都變得很少,而虛擬內存用量增加了(圖二),但是這種現象只持續了很短的時間。馬上,這些進程佔用的物理內存數量又開始回升了。
因此可以說,這類釋放內存的軟體根本沒有太大作用。相反,有些軟體可以在內存佔用達到一定程序之後自動釋放內存,這可能會對本身就已經很繁忙的計算機雪上加霜。想像這種情況,當你內存數量不多,而又運行了比較大型的程序後,必然導致物理內存數急劇減少,而在這種情況下所謂的「優化軟體」開始自作聰明,把佔用內存的數據往硬碟上進行分頁,而程序的運行需要這些數據,這可能導致了在同一時間內,「優化軟體」試圖將數據分頁到硬碟,而操作系統試圖將數據從硬碟讀取到內存,極大增加了硬碟的讀寫。
其實在早期,這類程序還是有一定作用的,那時候主流的Windows 9x操作系統本身在內存管理上存在問題,而且有些設計不嚴謹的程序也可能存在內存泄露的Bug,因此這類軟體應運而生。但是現在基於NT技術的Windows操作系統在內存管理上得到了極大提高,同時大部分軟體的設計也越來越合理,因此我們完全可以和這類軟體說再見了。
說了這么多網上流傳的錯誤觀點,那麼我們該怎樣設置才能達到最佳性能呢?
首先看看如何確定虛擬內存的大小。在前面我們已經說過了,嚴格按照1.5-2倍的倍數關系來設置並不科學,因此我們可以根據系統的實際應用情況進行設置。在這過程中需要用到Windows 2000/XP Pro/2003自帶的性能監視器。
運行「perfmon.msc」打開性能監視器,展開左側的性能日誌和警報,並點擊選擇記數器日誌,在右側的面板中空白處點擊滑鼠右鍵,選擇新建日誌設置,並命名為Pagefile,然後回車確認,然後會出現圖三所示的窗口。
在常規選項卡下,點擊添加記數器按鈕,在新彈出的窗口的性能對象下拉菜單中選擇Paging File,並選擇「從列表選擇記數器」,然後點擊% Usage Peak,在範例中選擇「_Total」,並接著點擊「添加」按鈕,完成的設置應該跟圖四一樣。
然後關閉這個窗口,並點擊圖三中的「確定」按鈕。點擊「是」創建日誌文件。接著打開「日誌文件」選項卡,在日誌文件類型下拉菜單中選則「文本文件(逗號分隔)」,然後記住「例如」框中顯示的日誌文件的路徑。
這樣,點擊確定後這個記數器已經開始運行了,你可以在電腦上進行你的日常操作,並盡可能多的打開和關閉各種經常使用的應用程序和游戲。經過幾個小時的使用,基本上記數器已經可以對你的使用情況做出一個完整的評估。
這時你需要先停止這個記數器的運行,同樣是在記數器日誌窗口中,選中我們新建的Page File記數器,然後右鍵點擊,並且選擇停止。用記事本打開日誌文件,你看到的結果應該跟圖六類似。我們根據這幅圖一起來分析一下分頁文件的使用。
需要注意的是,在日誌中的數值並不是分頁文件的使用量,而是使用率。也就是說,根據日誌文件的顯示,該系統一般情況下的分頁文件只使用了25%左右,而系統當前設置的分頁文件足有2GB,那麼為了節省硬碟空間,完全可以把分頁文件最大值縮小為512MB大小。而對於最小值,可以先根據日誌中的佔用率求出平均佔用率,然後再與最大值相乘,就可以得到了。
在設置虛擬內存的時候還需要注意,如果你有超過一塊硬碟,那麼最好能把分頁文件設置在沒有安裝操作系統或應用程序的硬碟上,或者所有硬碟中速度最快的硬碟上。這樣在系統繁忙的時候才不會產生同一個硬碟既忙於讀取應用程序的數據又同時進行分頁操作的情況。相反,如果應用程序和分頁文件在不同的硬碟上,這樣才能最大程度降低硬碟利用率,同時提高效率。當然,如果你只有一個硬碟,就完全沒必要將分頁文件設置在其他分區了,同一個硬碟上不管設置在哪個分區中,對性能的影響都不是很大。
虛擬內存的設置並不麻煩,但是要用好虛擬內存卻還有很多事情需要注意。
我們已經知道,操作系統運行的過程中會把內存中的一些數據分頁到硬碟上,但是默認情況下,系統關閉的時候,這些數據並不會被自動刪除。因此,如果你在電腦上處理了機密數據,隨後你可能使用加密,或者將數據轉移到其他介質上的方法保證了其他人無法讀取機密文件的內容。但是你可能忘了,在分頁文件中可能還遺留有該文件的某些數據,而藉助專用的程序,任何人都可以分析分頁文件,從中讀出保存的數據。因此為了實現最大程度的安全,我們最好通過設置讓Windows在關閉的時候自動刪除分頁文件(這不是一般意義的刪除,而是使用無意義的數據填充整個分頁文件,這樣即便使用反刪除軟體也無法恢復)。運行Gpedit.msc打開組策略編輯器,在左側面板中定位到「計算機配置/Windows設置/安全設置/本地策略/安全選項」,然後啟用右側面板中「關機:清理虛擬內存頁面文件」這一策略。不過要注意,啟用該策略將會延長Windows關閉所需的時間,因此如果不是必要請不要啟用該策略。
我們都知道硬碟使用時間長了將會出安生文件碎片,而碎片太多就會影響運行效率,因此最佳做法是定時整理硬碟碎片。不過你可能不知道,因為在Windows運行的情況下pagefile.sys文件會被鎖定,因此該文件中的碎片並不會被整理。要整理分頁文件中的碎片,我們有三種方法。
第一種方法雖然不需要任何額外的工具,不過操作上有點麻煩。假設你的操作系統和分頁文件都位於C盤,首先請將分頁文件移動到D盤或者E盤等非系統盤(為使設置生效,設置好之後需要重啟動系統)。然後使用Windows自帶的磁碟碎片整理程序對C盤整理磁碟碎片,你可能需要多次整理才能完成的比較徹底。待整理完之後重新將分頁文件設置到C盤,因為C盤已經進行過了完整的碎片整理,因此重新在C盤創建的分頁文件將會是連續的,也就避免了碎片的產生。
第二種方法使用簡單,但是需要藉助其他軟體。這里我們使用的是一個叫「PageDefrag」的免費軟體。該軟體可以在這里下載:http://www.sysinternals.com/Utilities/PageDefrag.html ,運行之後將會看到圖七所示界面。從圖中可以看到,不僅pagefile.sys,該軟體還可以整理很多其他平時因為被系統鎖定而無法整理的系統文件。由於軟體不能在系統運行的時候對分頁文件進行獨占性訪問,因此整理工作會在下一次啟動系統的時候進行。你可以按照需要,設置下次啟動時整理(Defragment at next boot),或者每次啟動時整理(Defragment every boot)。
最後,如果你使用第三方的磁碟碎片整理軟體,例如O&O Defrag,那麼這類軟體自帶的Offline Defrag(離線整理,或者其他類似的稱呼)也可以在系統重啟動的時候整理這些被鎖定的系統文件。
Ⅲ 我的筆記本電腦虛擬內存該怎麼設置
工具/材料:電腦
1.點擊我的電腦選擇屬性。
Ⅳ 硬碟緩存2M、4M、8M、16M 它們到底有多大差別
差別滿大的。。緩存越大的硬碟速度也相應越快,所以推薦買大點的
不過一般買8M夠了,同樣的硬碟8M也只比2M貴200元左右
Ⅳ 快閃記憶體4M、8M、16M、32M、64M、都有什麼區別
傳輸速度跟頻率有關,並不是越大越快的,
4M,8M.....只是能存放的數據多一點而已,
但也不是越大越好,這根CPU帶寬有關系,
一般32位CPU支持最大內存為4GB內存空間
64位則高達16777216TB是很大的一個范圍
具體你可以在網路看一下
就像硬碟一樣,越大可裝的東西越多
Ⅵ 同樣是320G 西數硬碟,8M緩存與16M緩存有多大區別。普通用戶感覺的到嗎
差別不太大,8M的已經夠用了
16M的話就是臨時的空間大一點,在下載或拷貝大文件時16M要快點。
Ⅶ 優化mysql 多大內存 centos6
一、mysql的優化思路
mysql的優化分為兩方面:
1. 伺服器使用前的優化
2. 服務使用中的優化
二、mysql的基礎優化步驟
1. 硬體級優化
(1). 最好mysql自己使用一台物理伺服器
(2). 內存和CPU方面,根據需求給予mysql伺服器足夠大的內存和足夠多的CPU核數
(3). 避免使用Swap交換分區–交換時從硬碟讀取的它的速度很慢,有的DBA安裝系統時就不裝swap分區
(4). 如果是mysql主庫,硬碟可以選用比較好的高速硬碟,系統用SSD固態硬碟,數據盤用sas替代sata硬碟,將操作系統和數據分區分開
(5). mysql產生的日誌與資料庫也放到不同的磁碟分區上面
(6). mysql資料庫硬碟格式化時,可以指定更小的硬碟塊
(7). 關於做RAID方面,主庫盡量做成RAID10,既提高了數據的讀寫速度也提到了數據的安全性
(8). 伺服器雙線雙電,保障伺服器運行穩定,不會因為突然斷電影響業務和損壞磁碟數據
2. mysql資料庫設計優化
(1). 根據需求選擇正確的存儲引擎,比如說讀的特別猛就用MySAM,如果對事務性要求高就用InnoDB
(2). 設置合理的欄位類型和欄位長度,比如說你這個欄位就20多個欄位你設置成VARCHAR(255)就是對磁碟空間的浪費
(3). 默認值盡可能的使用 NOT NULL,如果空值太多對mysql的查詢會有影響,尤其是在查詢語句編寫上面
(4). 盡量少的使用VARCHAR,TEXT,BLOB這三個欄位
(5). 添加適當索引(index) [四種: 普通索引、主鍵索引、唯一索引unique、全文索引]
(6). 不要濫用索引,大表索引,小表不索引
(7). 表的設計合理化(符合3NF)
3. mysql配置參數的優化
這里是mysql5.5版本的配置文件
vi my.cnf
[client]
port = 3306 #mysql客戶端連接時的默認埠
socket = /tmp/mysql.sock #與mysql伺服器本地通信所使用的socket文件路徑
default-character-set = utf8 #指定默認字元集為utf8
[mysql]
no-auto-rehash #auto-rehash是自動補全的意思,就像我們在linux命令行里輸入命令的時候,使用tab鍵的功能是一樣的,這里是默認的不自動補全
default-character-set = utf8 #指定默認字元集為utf8
[mysqld]
user = mysql
port = 3306
character-set-server = utf8 #設置伺服器端的字元編碼
socket = /tmp/mysql.sock
basedir = /application/mysql
datadir = /mysqldata
skip-locking #避免MySQL的外部鎖定,減少出錯幾率增強穩定性。
open_files_limit = 10240 #MySQL打開的文件描述符限制,默認最小1024;當open_files_limit沒有被配置的時候,比較max_connections*5和ulimit -n的值,哪個大用哪個,當open_file_limit被配置的時候,比較open_files_limit和max_connections*5的值,哪個大用哪個。
back_log = 500 #back_log參數的值指出在MySQL暫時停止響應新請求之前的短時間內多少個請求可 以被存在堆棧中。 如果系統在一個短時間內有很多連接,則需要增大該參數的值,該參數值指定到來的TCP/IP連接的偵聽隊列的大小。不同的操作系統在這個隊列大小上有它自 己的限制。 試圖設back_log高於你的操作系統的限制將是無效的。默認值為50。對於Linux系統推薦設置為小於512的整數。
max_connections = 800 #MySQL的最大連接數,如果伺服器的並發連接請求量比較大,建議調高此值,以增加並行連接數量,當然這建立在機器能支撐的情況下,因為如果連接數越多, 介於MySQL會為每個連接提供連接緩沖區,就會開銷越多的內存,所以要適當調整該值,不能盲目提高設值。可以過』conn%』通配符查看當前狀態的連接 數量,以定奪該值的大小。
max_connect_errors = 3000 #對於同一主機,如果有超出該參數值個數的中斷錯誤連接,則該主機將被禁止連接。如需對該主機進行解禁,執行:FLUSH HOST。
table_cache = 614 #物理內存越大,設置就越大.默認為2402,調到512-1024最佳
external-locking = FALSE #使用–skip-external-locking MySQL選項以避免外部鎖定。該選項默認開啟
max_allowed_packet =8M #設置最大包,限制server接受的數據包大小,避免超長SQL的執行有問題 默認值為16M,當MySQL客戶端或mysqld伺服器收到大於max_allowed_packet位元組的信息包時,將發出「信息包過大」錯誤,並關閉連接。對於某些客戶端,如果通信信息包過大,在執行查詢期間,可能會遇「丟失與MySQL伺服器的連接」錯誤。默認值16M。
sort_buffer_size = 6M #用於表間關聯緩存的大小,查詢排序時所能使用的緩沖區大小。注意:該參數對應的分配內存是每連接獨占,如果有100個連接,那麼實際分配的總共排序緩沖區大小為100 × 6 = 600MB。所以,對於內存在4GB左右的伺服器推薦設置為6-8M。
join_buffer_size = 6M #聯合查詢操作所能使用的緩沖區大小,和sort_buffer_size一樣,該參數對應的分配內存也是每連接獨享。
thread_cache_size = 100 #伺服器線程緩存這個值表示可以重新利用保存在緩存中線程的數量,當斷開連接時如果緩存中還有空間,那麼客戶端的線程將被放到緩存中,如果線程重新被請求, 那麼請求將從緩存中讀取,如果緩存中是空的或者是新的請求,那麼這個線程將被重新創建,如果有很多新的線程,增加這個值可以改善系統性能.通過比較 Connections 和 Threads_created 狀態的變數,可以看到這個變數的作用
thread_concurrency = 8 #設置thread_concurrency的值的正確與否, 對mysql的性能影響很大, 在多個cpu(或多核)的情況下,錯誤設置了thread_concurrency的值, 會導致mysql不能充分利用多cpu(或多核), 出現同一時刻只能一個cpu(或核)在工作的情況。thread_concurrency應設為CPU核數的2倍. 比如有一個雙核的CPU, 那麼thread_concurrency的應該為4; 2個雙核的cpu, thread_concurrency的值應為8,屬重點優化參數
query_cache_size = 2M #指定MySQL查詢緩沖區的大小,在資料庫寫入量或是更新量也比較大的系統,該參數不適合分配過大。而且在高並發,寫入量大的系統,建系把該功能禁掉。
query_cache_limit = 1M #默認是4KB,設置值大對大數據查詢有好處,但如果你的查詢都是小數據查詢,就容易造成內存碎片和浪費
query_cache_min_res_unit = 2k #MySQL參數中query_cache_min_res_unit查詢緩存中的塊是以這個大小進行分配的,使用下面的公式計算查詢緩存的平均大小,根據計算結果設置這個變數,MySQL就會更有效地使用查詢緩存,緩存更多的查詢,減少內存的浪費。
default_table_type = InnoDB #默認表的引擎為InnoDB
thread_stack = 192K #限定用於每個資料庫線程的棧大小。默認設置足以滿足大多數應用transaction_isolation = READ-COMMITTED #設定默認的事務隔離級別.可用的級別如下:
READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE,1.READ UNCOMMITTED-讀未提交2.READ COMMITTE-讀已提交3.REPEATABLE READ -可重復讀4.SERIALIZABLE -串列
tmp_table_size = 246M #tmp_table_size 的默認大小是 32M。如果一張臨時表超出該大小,MySQL產生一個 The table tbl_name is full 形式的錯誤,如果你做很多高級 GROUP BY 查詢,增加 tmp_table_size 值。
max_heap_table_size = 246M #內存表,內存表不支持事務,內存表使用哈希散列索引把數據保存在內存中,因此具有極快的速度,適合緩存中小型資料庫,但是使用上受到一些限制
long_query_time = 1 #記錄時間超過1秒的查詢語句
log_long_format #
log-error = /logs/error.log #開啟mysql錯誤日誌,該選項指定mysqld保存錯誤日誌文件的位置
log-slow-queries = /logs/slow.log #慢查詢日誌文件路徑
pid-file = /pids/mysql.pid
log-bin = /binlog/mysql-bin #binlog日誌位置以及binlog的名稱
relay-log = /relaylog/relay-bin #relaylog日誌位置以名稱
binlog_cache_size = 1M #binlog_cache_size 就是滿足兩點的:一個事務,在沒有提交(uncommitted)的時候,產生的日誌,記錄到Cache中;等到事務提交(committed)需要提交的時候,則把日誌持久化到磁碟,默認是32K。
max_binlog_cache_size = 32M #binlog緩存最大使用的內存
max_binlog_size = 2M #一個binlog日誌的大小
expire_logs_days = 7 #保留7天的binlog
key_buffer_size = 124M #索引緩存大小: 它決定了資料庫索引處理的速度,尤其是索引讀的速度
read_buffer_size = 16M #MySql讀入緩沖區大小。對表進行順序掃描的請求將分配一個讀入緩沖區,MySql會為它分配一段內存緩沖區。read_buffer_size變數控制這一緩沖區的大小。如果對表的順序掃描請求非常頻繁,並且你認為頻繁掃描進行得太慢,可以通過增加該變數值以及內存緩沖區大小提高其性能
read_rnd_buffer_size = 2M #MySQL的隨機讀緩沖區大小。當按任意順序讀取行時(例如,按照排序順序),將分配一個隨機讀緩存區。進行排序查詢時,MySQL會首先掃描一遍該緩沖,以避免磁碟搜索,提高查詢速度,如果需要排序大量數據,可適當調高該值。但MySQL會為每個客戶連接發放該緩沖空間,所以應盡量適當設置該值,以避免內存開銷過大
bulk_insert_buffer_size = 1M #批量插入數據緩存大小,可以有效提高插入效率,默認為8M
myisam_sort_buffer_size = 1M #MyISAM表發生變化時重新排序所需的緩沖
myisam_max_sort_file_size = 10G #MySQL重建索引時所允許的最大臨時文件的大小 (當 REPAIR, ALTER TABLE 或者 LOAD DATA INFILE). 如果文件大小比此值更大,索引會通過鍵值緩沖創建(更慢)
myisam_repair_threads = 1 #如果一個表擁有超過一個索引, MyISAM 可以通過並行排序使用超過一個線程去修復他們.這對於擁有多個CPU以及大量內存情況的用戶,是一個很好的選擇.
myisam_recover #自動檢查和修復沒有適當關閉的 MyISAM 表
lower_case_table_names = 1 #讓mysql不區分大小寫
skip-name-resolve #禁用DNS解析,連接速度會快很多。不過,這樣的話就不能在MySQL的授權表中使用主機名了而只能用ip格式。
#slave-skip-errors = 1032,1062 #這是選填項讓slave庫跳過哪些錯誤繼續同步
#replicate-ignore-db=mysql #選填,同步時候哪個資料庫不同步設置
server-id = 1
innodb_additional_mem_pool_size = 4M #InnoDB 存儲的數據目錄信息和其它內部數據結構的內存池大小。應用程序里的表越多,你需要在這里分配越多的內存,默認是2M
innodb_buffer_pool_size = 2048M #這對Innodb表來說非常重要。Innodb相比MyISAM表對緩沖更為敏感。MyISAM可以在默 認的 key_buffer_size 設置下運行的可以,然而Innodb在默認的 設置下卻跟蝸牛似的。由於Innodb把數據和索引都緩存起來,無需留給操作系統太多的內存,因此如果只需要用Innodb的話則可以設置它高達 70-80% 的可用內存。一些應用於 key_buffer 的規則有 — 如果你的數據量不大,並且不會暴增,那麼無需把 innodb_buffer_pool_size 設置的太大了
innodb_file_io_threads = 4 #文件IO的線程數,一般為 4
innodb_thread_concurrency = 8 #你的伺服器CPU有幾個就設置為幾,建議用默認一般為8
innodb_flush_log_at_trx_commit = 2 #默認為1,如果將此參數設置為1,將在每次提交事務後將日誌寫入磁碟。為提供性能,可以設置為0或2,但要承擔在發生故障時丟失數據的風險。設置為0表示事務日誌寫入日誌文件,而日誌文件每秒刷新到磁碟一次。設置為2表示事務日誌將在提交時寫入日誌,但日誌文件每次刷新到磁碟一次。
innodb_log_buffer_size = 2M #此參數確定些日誌文件所用的內存大小,以M為單位。緩沖區更大能提高性能,但意外的故障將會丟失數據.MySQL開發人員建議設置為1-8M之間
innodb_log_file_size = 4M #此參數確定數據日誌文件的大小,以M為單位,更大的設置可以提高性能,但也會增加恢復故障資料庫所需的時間
innodb_log_files_in_group = 3 #為提高性能,MySQL可以以循環方式將日誌文件寫到多個文件。推薦設置為3M
innodb_max_dirty_pages_pct = 90 #Buffer_Pool中Dirty_Page所佔的數量,直接影響InnoDB的關閉時間。參數 innodb_max_dirty_pages_pct可以直接控制了Dirty_Page在Buffer_Pool中所佔的比率,而且幸運的是 innodb_max_dirty_pages_pct是可以動態改變的。所以,在關閉InnoDB之前先調小,強制數據塊Flush一段時間,則能夠大大縮短MySQL關閉的時間。
innodb_lock_wait_timeout = 120 #InnoDB 有其內置的死鎖檢測機制,能導致未完成的事務回滾。但是,如果結合InnoDB使用MyISAM的lock tables 語句或第三方事務引擎,則InnoDB無法識別死鎖。為消除這種可能性,可以將innodb_lock_wait_timeout設置為一個整數值,指示 MySQL在允許其他事務修改那些最終受事務回滾的數據之前要等待多長時間(秒數)
innodb_file_per_table = 0 #獨享表空間(關閉)
[mysqlmp]
quick
max_allowed_packet = 16M
4. 架構優化
(1). 前端用memcached,redis等緩存分擔資料庫壓力
(2). 資料庫讀寫分離,負載均衡
(3). 資料庫分庫分表
(4). 存儲可採取分布式
5. 後期優化
主要是多觀察,後期就是維護工作了,觀察伺服器負載是需要添加硬體了,還是有語句有問題啊,還是參數要修改了。
6. 查詢優化(摘抄別人的)
63. 使用慢查詢日誌去發現慢查詢。
64. 使用執行計劃去判斷查詢是否正常運行。
65. 總是去測試你的查詢看看是否他們運行在最佳狀態下 –久而久之性能總會變化。
66. 避免在整個表上使用count(*),它可能鎖住整張表。
67. 使查詢保持一致以便後續相似的查詢可以使用查詢緩存。
68. 在適當的情形下使用GROUP BY而不是DISTINCT。
69. 在WHERE, GROUP BY和ORDER BY子句中使用有索引的列。
70. 保持索引簡單,不在多個索引中包含同一個列。
71. 有時候MySQL會使用錯誤的索引,對於這種情況使用USE INDEX。
72. 檢查使用SQL_MODE=STRICT的問題。
73. 對於記錄數小於5的索引欄位,在UNION的時候使用LIMIT不是是用OR.
74. 為了 避免在更新前SELECT,使用INSERT ON DUPLICATE KEY或者INSERT IGNORE ,不要用UPDATE去實現。
75. 不要使用 MAX,使用索引欄位和ORDER BY子句。
76. 避免使用ORDER BY RAND().
77。LIMIT M,N實際上可以減緩查詢在某些情況下,有節制地使用。
78。在WHERE子句中使用UNION代替子查詢。
79。對於UPDATES(更新),使用 SHARE MODE(共享模式),以防止獨占鎖。
80。在重新啟動的MySQL,記得來溫暖你的資料庫,以確保您的數據在內存和查詢速度快。
81。使用DROP TABLE,CREATE TABLE DELETE FROM從表中刪除所有數據。
82。最小化的數據在查詢你需要的數據,使用*消耗大量的時間。
83。考慮持久連接,而不是多個連接,以減少開銷。
84。基準查詢,包括使用伺服器上的負載,有時一個簡單的查詢可以影響其他查詢。
85。當負載增加您的伺服器上,使用SHOW PROCESSLIST查看慢的和有問題的查詢。
86。在開發環境中產生的鏡像數據中 測試的所有可疑的查詢。
Ⅷ mariadb 如何實現伺服器內存使用最大化
查詢最高內存佔用
使用以下命令可以知道mysql的配置使用多少 RAM
SELECT ( @@key_buffer_size
+ @@query_cache_size
+ @@innodb_buffer_pool_size
+ @@innodb_additional_mem_pool_size
+ @@innodb_log_buffer_size
+ @@max_connections * ( @@read_buffer_size
+ @@read_rnd_buffer_size
+ @@sort_buffer_size
+ @@join_buffer_size
+ @@binlog_cache_size
+ @@thread_stack
+ @@tmp_table_size
)
) / (1024 * 1024 * 1024) AS MAX_MEMORY_GB;
可以使用mysql計算器來計算內存使用
下面是理論,可以直接到推薦配置
如何調整配置
key_buffer_size(MyISAM索引用)
指定索引緩沖區的大小,它決定索引處理的速度,尤其是索引讀的速度。為了最小化磁碟的 I/O , MyISAM 存儲引擎的表使用鍵高速緩存來緩存索引,這個鍵高速緩存的大小則通過 key-buffer-size 參數來設置。如果應用系統中使用的表以 MyISAM 存儲引擎為主,則應該適當增加該參數的值,以便盡可能的緩存索引,提高訪問的速度。
怎麼設
show global status like 'key_read%';
+------------------------+-------------+
| Variable_name | Value |
+------------------------+-------------+
| Key_read_requests | 27813678764 |
| Key_reads | 6798830 |
---------------------
key_buffer_size通過檢查狀態值Key_read_requests和Key_reads,可以知道key_buffer_size設置是否合理。
比例key_reads / key_read_requests應該盡可能的低,至少是1:100,1:1000更好。
- show global status like '%created_tmp_disk_tables%';
key_buffer_size只對MyISAM表起作用。即使你不使用MyISAM表,但是內部的臨時磁碟表是MyISAM表,也要使用該值。可以使用檢查狀態值created_tmp_disk_tables得知詳情。
對於1G內存的機器,如果不使用MyISAM表,推薦值是16M(8-64M)
- show global status like 'key_blocks_u%';
- +------------------------+-------------+
- | Variable_name | Value |
- +------------------------+-------------+
- | Key_blocks_unused | 0 |
- | Key_blocks_used | 413543 |
- +------------------------+-------------+
可以根據此工式來動態的調整Key_blocks_used / (Key_blocks_unused + Key_blocks_used) * 100% ≈ 80%
- show engines;
查詢存儲引擎
如果是專用的DB伺服器,且以InnoDB引擎為主的場景,通常可設置物理內存的50%,這個參數不能動態更改,所以分配需多考慮。分配過大,會使Swap佔用過多,致使Mysql的查詢特慢。
如果是非專用DB伺服器,可以先嘗試設置成內存的1/4,如果有問題再調整
注意:如果你查詢的表更新比較頻繁,而且很少有相同的查詢,最好不要使用查詢緩存。因為這樣會消耗很大的系統性能還沒有任何的效果
- query_cache_size=128M
- query_cache_type=1
- mysql> show status like '%Qcache%';
- +-------------------------+-----------+
- | Variable_name | Value |
- +-------------------------+-----------+
- | Qcache_free_blocks | 669 |
- | Qcache_free_memory | 132519160 |
- | Qcache_hits | 1158 |
- | Qcache_inserts | 284824 |
- | Qcache_lowmem_prunes | 2741 |
- | Qcache_not_cached | 1755767 |
- | Qcache_queries_in_cache | 579 |
- | Qcache_total_blocks | 1853 |
- +-------------------------+-----------+8 rows in set (0.00 sec)
我們可以看到現網命中1158,未緩存的有1755767次,說明我們這個系統命中的太少了,表變動比較多,不什麼開啟這個功能涉及參數
query_cache_limit:允許 Cache 的單條 Query 結果集的最大容量,默認是1MB,超過此參數設置的 Query 結果集將不會被 Cache
query_cache_min_res_unit:設置 Query Cache 中每次分配內存的最小空間大小,也就是每個 Query 的 Cache 最小佔用的內存空間大小
query_cache_size:設置 Query Cache 所使用的內存大小,默認值為0,大小必須是1024的整數倍,如果不是整數倍,MySQL 會自動調整降低最小量以達到1024的倍數
query_cache_type:控制 Query Cache 功能的開關,可以設置為0(OFF),1(ON)和2(DEMAND)三種,意義分別如下: 0(OFF):關閉 Query Cache 功能,任何情況下都不會使用 Query Cache 1(ON):開啟 Query Cache 功能,但是當 SELECT 語句中使用的 SQL_NO_CACHE 提示後,將不使用Query Cache 2(DEMAND):開啟 Query Cache 功能,但是只有當 SELECT 語句中使用了 SQL_CACHE 提示後,才使用 Query Cache
query_cache_wlock_invalidate:控制當有寫鎖定發生在表上的時刻是否先失效該表相關的 Query Cache,如果設置為 1(TRUE),則在寫鎖定的同時將失效該表相關的所有 Query Cache,如果設置為0(FALSE)則在鎖定時刻仍然允許讀取該表相關的 Query Cache。
這個參數實際起作用的最大值(實際最大可連接數)為16384,即該參數最大值不能超過16384,即使超過也以16384為准;
增加max_connections參數的值,不會佔用太多系統資源。系統資源(CPU、內存)的佔用主要取決於查詢的密度、效率等;
該參數設置過小的最明顯特徵是出現」Too many connections」錯誤
- mysql> show variables like '%max_connect%';
- +-----------------------+-------+
- | Variable_name | Value |
- +-----------------------+-------+
- | extra_max_connections | 1 |
- | max_connect_errors | 100 |
- | max_connections | 2048 |
- +-----------------------+-------+3 rows in set (0.00 sec)
- mysql> show status like 'Threads%';
- +-------------------+---------+
- | Variable_name | Value |
- +-------------------+---------+
- | Threads_cached | 0 |
- | Threads_connected | 1 |
- | Threads_created | 9626717 |
- | Threads_running | 1 |
- +-------------------+---------+4 rows in set (0.00 sec)
- mysql> show variables like 'open_files_limit';
- +------------------+-------+
- | Variable_name | Value |
- +------------------+-------+
- | open_files_limit | 65535 |
- +------------------+-------+1 row in set (0.00 sec)
- ulimit -n65535
- mysql> SHOW GLOBAL STATUS like '%sort%';
- +---------------------------+--------+
- | Variable_name | Value |
- +---------------------------+--------+
- | Sort_merge_passes | 0 |
- | Sort_priority_queue_sorts | 1409 |
- | Sort_range | 0 |
- | Sort_rows | 843479 |
- | Sort_scan | 13053 |
- +---------------------------+--------+5 rows in set (0.00 sec)
如果發現Sort_merge_passes的值比較大,你可以考慮增加sort_buffer_size來加速ORDER BY 或者GROUP BY 操作,不能通過查詢或者索引優化的。我們這為0,那就沒必要設置那麼大。
- mysql> show global status like 'binlog_cache%';
- +-----------------------+----------+
- | Variable_name | Value |
- +-----------------------+----------+
- | Binlog_cache_disk_use | 220840 |
- | Binlog_cache_use | 67604667 |
- +-----------------------+----------+2 rows in set (0.00 sec)
Binlog_cache_disk_use表示因為我們binlog_cache_size設計的內存不足導致緩存二進制日誌用到了臨時文件的次數
Binlog_cache_use 表示 用binlog_cache_size緩存的次數
當對應的Binlog_cache_disk_use 值比較大的時候 我們可以考慮適當的調高 binlog_cache_size 對應的值
如上圖,現網是32K,我們加到64K
- mysql> show status like '%threads%';
- +-------------------------+---------+
- | Variable_name | Value |
- +-------------------------+---------+
- | Delayed_insert_threads | 0 |
- | Slow_launch_threads | 0 |
- | Threadpool_idle_threads | 0 |
- | Threadpool_threads | 0 |
- | Threads_cached | 0 |
- | Threads_connected | 1 |
- | Threads_created | 9649301 |
- | Threads_running | 1 |
- +-------------------------+---------+8 rows in set (0.00 sec)
- mysql> show status like 'connections';
- +---------------+---------+
- | Variable_name | Value |
- +---------------+---------+
- | Connections | 9649311 |
- +---------------+---------+1 row in set (0.00 sec)
- Thread_Cache_Hit = (Connections - Threads_created) / Connections * 100%;
- mysql> show status like 'Created_tmp_%';
- +-------------------------+-------+
- | Variable_name | Value |
- +-------------------------+-------+
- | Created_tmp_disk_tables | 0 |
- | Created_tmp_files | 626 |
- | Created_tmp_tables | 3 |
- +-------------------------+-------+3 rows in set (0.00 sec)
如上圖,寫入硬碟的為0,3次中間表,說明我們的默認值足夠用了
注意這里只推薦innodb引擎
內存配置只關注有注釋的行
- [mysqld]
- datadir=/var/lib/mysql
- socket=/var/lib/mysql/mysql.sockdefault-storage-engine=INNODB
- character-set-server=utf8
- collation-server=utf8_general_ci
- user=mysql
- symbolic-links=0# global settings
- table_cache=65535table_definition_cache=65535max_allowed_packet=4M
- net_buffer_length=1M
- bulk_insert_buffer_size=16M
- query_cache_type=0 #是否使用查詢緩沖,0關閉
- query_cache_size=0 #0關閉,因為改表操作多,命中低,開啟消耗cpu
- # shared
- key_buffer_size=8M #保持8M MyISAM索引用
- innodb_buffer_pool_size=4G #DB專用mem*50%,非DB專用mem*15%到25%
- myisam_sort_buffer_size=32M
- max_heap_table_size=16M #最大中間表大小
- tmp_table_size=16M #中間表大小
- # per-thread
- sort_buffer_size=256K #加速排序緩存大小
- read_buffer_size=128k #為需要全表掃描的MYISAM數據表線程指定緩存
- read_rnd_buffer_size=4M #已排序的表讀取時緩存,如果比較大內存就到6M
- join_buffer_size=1M #join語句多時加大,1-2M
- thread_stack=256k #線程空間,256K or 512K
- binlog_cache_size=64K #大事務binlog
- # big-tables
- innodb_file_per_table = 1skip-external-locking
- max_connections=2048 #最大連接數
- skip-name-resolve
- # slow_query_log
- slow_query_log_file = /var/log/mysql-slow.log
- long_query_time = 30group_concat_max_len=65536# according to tuning-primer.sh
- thread_cache_size = 8thread_concurrency = 16# set variables
- concurrent_insert=2
- set global {要改的key} = {值}; (立即生效重啟後失效)
- set @@{要改的key} = {值}; (立即生效重啟後失效)
- set @@global.{要改的key} = {值}; (立即生效重啟後失效)
- mysql> set @@global.innodb_buffer_pool_size=4294967296;
- ERROR 1238 (HY000): Variable 'innodb_buffer_pool_size' is a read only variable
- mysql> set @@global.thread_stack=262144;
- ERROR 1238 (HY000): Variable 'thread_stack' is a read only variable
- mysql> set @@global.binlog_cache_size=65536;
- Query OK, 0 rows affected (0.00 sec)
- mysql> set @@join_buffer_size=1048576;
- Query OK, 0 rows affected (0.00 sec)
- mysql> set @@read_rnd_buffer_size=4194304;
- Query OK, 0 rows affected (0.00 sec)
- mysql> set @@sort_buffer_size=262144;
- Query OK, 0 rows affected (0.00 sec)
- mysql> set @@read_buffer_size=131072;
- Query OK, 0 rows affected (0.00 sec)
- mysql> set global key_buffer_size=8388608;
- Query OK, 0 rows affected (0.39 sec)
我們可以看到innodb_buffer_pool_size和thread_stack報錯了,他們只能改配置文件,在運行時是只讀的。 以下直接復制使用
- set @@global.binlog_cache_size=65536;
- set @@join_buffer_size=1048576;
- set @@read_rnd_buffer_size=4194304;
- set @@sort_buffer_size=262144;
- set @@read_buffer_size=131072;
- set global key_buffer_size=8388608;
另一個參考如下
Key_blocks_unused表示未使用的緩存簇(blocks)數,Key_blocks_used表示曾經用到的最大的blocks數,比如這台伺服器,所有的緩存都用到了,要麼增加key_buffer_size,要麼就是過渡索引了,把緩存占滿了。比較理想的設置:
innodb_buffer_pool_size (innodb索引用)
這個參數和MyISAM的key_buffer_size有相似之處,但也是有差別的。這個參數主要緩存innodb表的索引,數據,插入數據時的緩沖。為Innodb加速優化首要參數。
該參數分配內存的原則:這個參數默認分配只有8M,可以說是非常小的一個值。
query_cache_size(查詢緩存)
緩存機制簡單的說就是緩存sql文本及查詢結果,如果運行相同的sql,伺服器直接從緩存中取到結果,而不需要再去解析和執行sql。如果表更改了,那麼使用這個表的所有緩沖查詢將不再有效,查詢緩存值的相關條目被清空。更改指的是表中任何數據或是結構的改變,包括INSERT、UPDATE、DELETE、TRUNCATE、ALTER TABLE、DROP TABLE或DROP DATABASE等,也包括那些映射到改變了的表的使用MERGE表的查詢。顯然,這對於頻繁更新的表,查詢緩存是不適合的,而對於一些不常改變數據且有大量相同sql查詢的表,查詢緩存會節約很大的性能。
要不要打開?
先設置成這樣跑一段時間
看看命中結果來進行進一步的判斷
Qcache_free_blocks:表示查詢緩存中目前還有多少剩餘的blocks,如果該值顯示較大,則說明查詢緩存中的內存碎片過多了,可能在一定的時間進行整理。
Qcache_free_memory:查詢緩存的內存大小,通過這個參數可以很清晰的知道當前系統的查詢內存是否夠用,是多了,還是不夠用,DBA可以根據實際情況做出調整。
Qcache_hits:表示有多少次命中緩存。我們主要可以通過該值來驗證我們的查詢緩存的效果。數字越大,緩存效果越理想。
Qcache_inserts: 表示多少次未命中然後插入,意思是新來的SQL請求在緩存中未找到,不得不執行查詢處理,執行查詢處理後把結果insert到查詢緩存中。這樣的情況的次數,次數越多,表示查詢緩存應用到的比較少,效果也就不理想。當然系統剛啟動後,查詢緩存是空的,這很正常。
Qcache_lowmem_prunes:該參數記錄有多少條查詢因為內存不足而被移除出查詢緩存。通過這個值,用戶可以適當的調整緩存大小。
Qcache_not_cached: 表示因為query_cache_type的設置而沒有被緩存的查詢數量。
Qcache_queries_in_cache:當前緩存中緩存的查詢數量。
Qcache_total_blocks:當前緩存的block數量。
innodb_additional_mem_pool_size(InnoDB內部目錄大小)
InnoDB 字典信息緩存主要用來存放 InnoDB 存儲引擎的字典信息以及一些 internal 的共享數據結構信息,也就是存放Innodb的內部目錄,所以其大小也與系統中所使用的 InnoDB 存儲引擎表的數量有較大關系。
這個值不用分配太大,通常設置16M夠用了,默認8M,如果設置的內存大小不夠,InnoDB 會自動申請更多的內存,並在 MySQL 的 Error Log 中記錄警告信息。
innodb_log_buffer_size (日誌緩沖)
表示InnoDB寫入到磁碟上的日誌文件時使用的緩沖區的位元組數,默認值為16M。一個大的日誌緩沖區允許大量的事務在提交之前不用寫日誌到磁碟,所以如果有更新,插入或刪除許多行的事務,則使日誌緩沖區更大一些可以節省磁碟IO
通常最大設為64M足夠
max_connections (最大並發連接)
MySQL的max_connections參數用來設置最大連接(用戶)數。每個連接MySQL的用戶均算作一個連接,max_connections的默認值為100。
可以看到此時的並發數也就是Threads_connected=1,還遠遠達不到2048
max_connections 還取決於操作系統對單進程允許打開最大文件數的限制
也就是說如果操作系統限制單個進程最大可以打開100個文件
那麼 max_connections 設置為200也沒什麼用
MySQL 的 open_files_limit 參數值是在MySQL啟動時記錄的操作系統對單進程打開最大文件數限制的值
可以使用 show variables like 'open_files_limit'; 查看 open_files_limit 值
或者直接在 Linux 下通過ulimit -n命令查看操作系統對單進程打開最大文件數限制 ( 默認為1024 )
connection級內存參數(線程獨享)
connection級參數,是在每個connection第一次需要使用這個buffer的時候,一次性分配設置的內存。
排序性能
mysql對於排序,使用了兩個變數來控制sort_buffer_size和 max_length_for_sort_data, 不象oracle使用SGA控制. 這種方式的缺點是要單獨控制,容易出現排序性能問題.
讀取緩存
read_buffer_size = 128K(默認128K)為需要全表掃描的MYISAM數據表線程指定緩存
read_rnd_buffer_size = 4M:(默認256K)首先,該變數可以被任何存儲引擎使用,當從一個已經排序的鍵值表中讀取行時,會先從該緩沖區中獲取而不再從磁碟上獲取。
大事務binlog
join語句內存影響
如果應用中,很少出現join語句,則可以不用太在乎join_buffer_size參數的設置大小。
如果join語句不是很少的話,個人建議可以適當增大join_buffer_size到1MB左右,如果內存充足可以設置為2MB。
線程內存影響
Thread_stack:每個連接線程被創建時,MySQL給它分配的內存大小。當MySQL創建一個新的連接線程時,需要給它分配一定大小的內存堆棧空間,以便存放客戶端的請求的Query及自身的各種狀態和處理信息。
如上:系統啟動到現在共接受到客戶端的連接9649311次,共創建了9649301個連接線程,當前有1個連接線程處於和客戶端連接的狀態。而在Thread Cache池中共緩存了0個連接線程(Threads_cached)。
Thread Cache 命中率:
一般在系統穩定運行一段時間後,Thread Cache命中率應該保持在90%左右才算正常。
內存臨時表
tmp_table_size 控制內存臨時表的最大值,超過限值後就往硬碟寫,寫的位置由變數 tmpdir 決定
max_heap_table_size 用戶可以創建的內存表(memory table)的大小.這個值用來計算內存表的最大行數值。
Order By 或者Group By操作多的話,加大這兩個值,默認16M
mariadb 推薦配置
運行時修改
使用以下命令來修改變數
試驗
Ⅸ 手機日記記錄器緩沖區選16m會怎樣
當然是越大越好,越大後台運行的就越多拉,輸出的日誌是保存在緩沖區的。這個大小決定了log的長度。緩沖區簡單的來說對於手機就是每次界面所能容下的最大體積。按默認設置即可。如果較低的話可能一些絢麗的桌面載入有問題。是log緩沖區吧。。。用於記錄的。。。也可以這么講。。。就是日誌,每一條log文件最大大小,不出什麼問題也沒啥用,如果你不是開發者,默認值就可以了,這個只是在開發時有用的選項。
Ⅹ C盤空間不足
一、系統優化設置。
1、刪除Windows強加的附件:
1) 用記事本NOTEPAD修改\winnt\inf\sysoc.inf,用查找/替換功能,在查找框中輸入,hide(一個英文逗號緊跟hide),將「替換為」框設為空。並選全部替換,這樣,就把所有的,hide都去掉了,
2) 存檔退出,
3)再運行「添加-刪除程序」,就會看見「添加/刪除 Windows 組件」中多出了好幾個選項;這樣你可以刪除好些沒有用的附件
2、關掉調試器Dr. Watson;
Dr.Watson是自帶的系統維護工具,它會在程序載入失敗或崩潰時顯示。運行drwtsn32,把除了「轉儲全部線程上下文」之外的全都去掉。否則一旦有程序出錯,硬碟會響很久,而且會佔用很多空間。如果你以前遇到過這種情況,請查找user.dmp文件並刪掉,可能會省掉幾十M的空間。這是出錯程序的現場,對我們沒用。然後打開注冊表,找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug子鍵分支,雙擊在它下面的Auto鍵值名稱,將其「數值數據」改為0,最後按F5刷新使設置生效,這樣就徹底來取消它的運行了。
另外藍屏時出現的memory.dmp也可刪掉。可在我的電腦/屬性中關掉BSOD時的DUMP
3、關閉「系統還原」:滑鼠右健單擊桌面上的「我的電腦」,選擇「屬性」,找到「系統還原」,如果你不是老噼里啪啦安裝一些軟體(難道你比我還厲害??),你也可以去掉,這樣可以節省好多空間。
4.關閉「休眠支持」:因為休眠功能占的硬碟空間蠻大的, 所以關閉比較好,
控制台-->電源選項-->休眠(不要打勾)
(藍調註:我覺得休眠還是很有用的。)
5、關掉不必要的服務
單擊「開始」→「設置」→「控制面板」。雙擊「管理工具」→「服務」,打開後將看到服務列表,有些服務已經啟動,有些則沒有。右鍵單擊要配置的服務,然後單擊「屬性」。在「常規」選項卡上選擇「自動」、「手動」或「禁用」,其中「自動」表示每次系統啟動時,Windows XP都自動啟動該服務;「手動」表示Windows XP不會自動啟動該服務,而是在你需要該服務時手動啟動該服務;而「禁用」則表示不允許啟動該服務。在實際配置時,選擇「手動」或者「禁用」都可以實現關閉該服務的目的,推薦使用手動功能,這樣你隨時可以啟動一些臨時需要的服務。
有些服務是Windows XP所必需的,不能關閉,否則將會造成系統崩潰。至於各項服務
的功能,我們可以通過雙擊該服務或將滑鼠懸停在該服務名上查看。具體服務的說明淺顯,大家看得懂,可以自己選擇那些要那些不要。修改的方法是:選中禁用的服務,點右鍵,選"屬性"> "停止",將"啟動類型"設置為"手動"或"已禁用"。
6、加速XP的開關機
1)縮短等待時間
開啟注冊表編輯器,找到 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control,
將 WaitToKillServiceTimeout 設為:1000或更小。 ( 原設定值:20000 )
找到 HKEY_CURRENT_USER\Control Panel\Desktop 鍵,將右邊視窗的
WaitToKillAppTimeout 改為 1000, ( 原設定值:20000 )即關閉程序時僅等待1秒。將 HungAppTimeout 值改為:200( 原設定值:5000 ), 表示程序出錯時等待0.5秒。
2)讓系統自動關閉停止回應的程式。
打開注冊表 HKEY_CURRENT_USER\Control Panel\Desktop 鍵, 將 AutoEndTasks 值設為 1。 ( 原設定值:0 )
3)MsConfig。大多數朋友都應該熟識MsConfig了,這是一個系統內置的Windows設置工具。點擊開始菜單,選擇「運行」,然後在錄入框中敲入「msconfig」回車。我們要動手腳的是(啟動)選項卡,點擊它,這個選項卡中顯示了Windows啟動時運行的所有程序。這里沒有一個程序對Windows來說是生死悠關的,所以放心大膽地把不要的去掉。把部分勾勾去掉之後,Windows啟動會快些,同時空閑的系統資源也會多出一些。
7、XP Prefetcher
Windows XP自帶了一個名為Prefetcher的服務,這個服務管理著Windows啟動時的程序初始,其中指定的程序可以在以後使用中快速載入。 Prefetcher在默認情況下就是打開的,不過它的性能還可以進一步提升。打開注冊表編輯器,在注冊表中找到:
HKEY_LOCAL_ ManagerMemory
ManagementPrefetchParameters,其中有一個鍵值名為EnablePrefetcher,多數情況下它的值是3。推薦設置值是5,在我的機子上,設為5的時候工作狀態最佳。可以隨便試試不同的數值,直到找到最適合自己機子的值為止。
也可以把Prefetcher禁用掉,只需把值設為0就可以了。不過,除非是為了測試用途,一般人都不會傻到把它設為0。
8、壓縮文件夾
這是一個相當好的優化,Windows XP內置了對.ZIP文件的支持,我們可以把zip文件當成文件夾瀏覽。不過,系統要使用部分資源來實現這一功能,因此禁用這一功能可以提升系統性能。實現方法非常簡單,只需取消zipfldr.dll的注冊就可以了,點擊開始——運行,敲入: regsvr32 /u zipfldr.dll 。然後回車即可。
9、不載入DLL文件
瀏覽器在使用之後往往會有部分DLL文件在內存中緩存好長一段時間,相當大一部分內存會被不用的DLL文件點用。為了防止這種事情發生,找到注冊表如下位置:
HKEY_LOCAL_
接下來建立一個名為AlwaysUnloadDLL,值為1的雙位元組值。
如果想要去除這項優化,只需把該鍵值設為0(也可以乾脆把鍵刪掉)。注意:該項優化要在Windows重新啟動後才生效。
10、完全關閉Windows XP文件保護功能。此招慎用
從注冊表中找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon,修改「SFCDisable」鍵值為「FFFFFF9D」,如果需要重新啟用該功能,重新設置為 「0」就可以了。
11、手動指定進程次序查看
同時按下Control+Alt+Delete三個鍵,然後點擊「Processes(進程)」選項卡,可以看到一個如上圖所示的對話框,在這里可以看到目前正在運行的所有進程。如果要為一個程序分配更多的進程時間,如3D Studio Max,只需右鍵點擊這個進程,再把滑鼠指針向下移動到「Set Priority>(設置優先順序)」,然後選擇你想要這個程序處在哪個優先順序。當我接收email時,我會把3DMAX設為「標准」,但當我離開計算機的時候,我會把它的優先急提升為最高的「實時」,這樣可以計算機更專注更快速地處理3D動作
12、關閉錯誤回報
控制台---->系統---->進階---->右下角--->錯誤報告---->關閉
13、加快窗口顯示速度:我們可以通過修改注冊表來改變窗口從任務欄彈出,以及最小化回歸任務欄的動作,步驟如下:打開注冊表編輯器,找到HKEY_CURRENT_USER\
Control Panel\Desktop\WindowMetrics子鍵分支,在右邊的窗口中找到MinAniMate鍵值,其類型為REG_SZ,默認情況下此健值的值為1,表示打開窗口顯示的動畫,把它改為0,則禁止動畫的顯示,接下來從開始菜單中選擇「注銷」命令,激活剛才所作的修改即可。
14、去掉「更新」選項:對於大多數的用戶來說,Windows XP的Windows Update功能似乎作用不大,我們可以去掉它,操作步驟如下:打開注冊表編輯器,找到
HKEY_CURRENT_USER\Software \Microsoft\Windows\CurrentVersion\Policies\
Explorer子鍵分支,選擇「編輯」菜單下的「新建」命令,新建一個類型為REG_DWORD的值,名稱為NoCommonGroups,雙擊新建的NoCommonGroups子鍵,在「編輯字元串」文本框中輸入鍵值「1」,然後單擊「確定」按鈕並重新啟動系統即可。
15、修改Windows XP的登錄背景圖案:面對長久不變的單調的登錄圖案,你可能日久生厭,我們可以通過注冊表來把它換成自己喜歡的圖案,步驟如下:打開注冊表編輯器,找到 HKEY_USERS\.DEFAULT\Control Panel\Desktop子鍵分支,雙擊wallpaper,鍵入你選擇好的圖片的路徑,如:c:\Documents and Settings\My Documents\My Pictures\mypic.bmp,點擊「確定」,然後找到Tilewallpaper,雙擊它輸入鍵值「1」,重新啟動系統即可看到效果。
16、修改登錄時的背景色:如果你還想修改登錄時的背景顏色,可以按以下步驟操作:打開注冊表編輯器,找到HKEY_USERS\. DEFAULT\Control Panel\Colors子鍵分支,雙擊子鍵分支下的Background鍵值名,出現「編輯字元串」對話框,在「數值數據」文本框中輸入代表顏色的鍵值(比如黑色的RGB值為000,白色的RGB值為255 255 255,系統默認值是58 110 165),點擊「確定」按鈕,重新啟動系統即可。
17、設置啟動信息或增加警告信息:如果在啟動Windows XP時,希望顯示一些自己定義的個性化信息,可以按以下步驟來操作:打開注冊表編輯器,找到HKEY_LOCAL_MACHINE_SOFTWARE\ Microsoft\Windows NT\CurrentVersion\Winlogon子鍵分支,雙擊在它下面的LegalNoticeCaption健值名稱,打開「編輯字元串」窗口,在「數值數據」文本框中輸入信息對話框的標題,比如「你好,歡迎使用本機器」,然後雙擊LegalNoticeText,在隨後出現的「編輯字元串」 窗口中輸入想要顯示的警告信息,比如「請不要隨意修改本級的設置,謝謝!」,單擊「確定」按鈕,重新啟動即可看到修改後的效果了。
18、每次啟動時保持桌面設置不變:我們可以通過修改注冊表來保護我們的桌面設置,無論做了什麼樣的修改,只要重新啟動之後桌面就會恢復原樣。步驟如下:打開注冊表編輯器,找到HKEY_CURRENT_USERS\Software\Microsoft\Windows\ CurrentVersion\ Polices
\Explorer子鍵分支,在它的下面找到NoSaveSettings,其類型為REG_SZ,將其鍵值改為「0」,或者直接刪除該鍵值項,重新啟動系統使設置生效。
19、任意定製按鈕顏色:盡管Windows XP本身帶有多種窗口顯示方案,但用戶想定義某一個部位的顏色,比如把按鈕的顏色由黑色改為藍色或紅色,這時就需要修改注冊表了,步驟如下:打開注冊表編輯器,找到HKEY_CURRENT_USER\Control Panel\Colors子鍵分支,雙擊在它下面的Bottontext,在打開的對話框中將其鍵值改為你想要顏色的值,比如紅色255 0 0,單擊「確定」按鈕,並重新啟動系統即可看到效果了,此時按鈕上的文字顏色將變成紅色,此外你還可以修改按鈕的寬度和高度及背景等參數。
20、修改滑鼠右鍵菜單
我們知道在98下可以通過注冊表來修改滑鼠右鍵菜單,其實在WinXP中也可以。方法如下:這里以在滑鼠右鍵菜單上添加「用DOS窗口在這里瀏覽」為例。
1)打開注冊表編輯器,找到HKEY_CLASSES_ROOT\Directory\shell,然後選中它,點擊滑鼠右鍵,新建一個主鍵,取名為「DOS」,然後選中新建的主鍵,在右邊雙擊默認字元串值,在彈出的對話框中輸入「用DOS窗口在這里瀏覽」,然後選中新建的主鍵,再建立一個主鍵,取名為「command」,選中「command」主鍵,修改默認值為「cmd.exe /k "cd %L"」即可。
2)檢查:在任意一個文件夾上按下滑鼠右鍵,可以在彈出的菜單裡面看到「用DOS窗口在這里瀏覽」,選擇用DOS窗口在這里瀏覽,按下滑鼠左鍵,看到沒有,DOS窗口彈了出來!
21、修改系統ID號(ID號在WinXP裡面很重要)
在系統屬性裡面的常規標簽下我們可以看到一串數字,如:55661-005-0809362-22169等等。這就是ID號。正版的WinXP每一套的ID號是不相同的(應該可以猜到我的目的了吧?),那麼我們可不可以修改呢?當然可以(廢話!如果不可以就沒有必要寫這篇文章了)。跟我來,看看我的本領!
1)ID號是存放在注冊表裡面的。主要放在這幾個鍵值下:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Registration的字元串ProctId
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\User information的字元串產品標識 /*如果沒有使用向微軟注冊的話,這里不會出現*/
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion的字元串ProctId
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion的字元串ProctId
以上4個地方就是在注冊表中存放ID的鍵值,修改的時候要同時修改,修改完以後再看系統屬性裡面的常規標簽,以免修改失敗,導致ID還原。
22、修改版本號:
在關於Windows裡面有一個內部版本號(正式版的是:2600.xpclient.010817-1148),這個版本號也是存放在注冊表中的,具體位置是HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion,它用一個字元串來記錄,修改這個名字叫做BuildLab的字元串就可以修改你的XP的版本號。
23、向隱藏的垃圾箱刪除文件
Windows XP垃圾箱的默認位置是在桌面的右下角,在底部系統托盤的上面。如果用戶打開多個窗口,則會擋住垃圾箱,使用戶無法拖曳文件及文件夾至垃圾箱。為此,微軟公司專門做了非常人性化的設計,當用戶拖動一批文件並移至桌面右下角時,用戶可以拖動滑鼠並將所有文件移至桌面最下方任務條的空白區域,並在那裡停留幾秒鍾,屆時所有打開的窗口將會自動最小化,從而允許用戶將文件拖至垃圾箱。另外,無論打開的多個窗口是否最大化,用戶執行上述操作均可以實現讓所有窗口最小化的效果。
24、音樂目錄圖片隨意設
Windows XP在以往的Windows操作系統之上提供了很多更高級的管理功能,其中包括圖片冊生成器,該圖片冊生成器可以將唱片封面圖片自動放置到用戶對應保存的音樂文件夾內(這些音樂文件一般是微軟的WMA格式文件)。雖然這項功能非常方便,但也存在一些問題。例如如果有些用戶以前已經把一些音樂CD光碟轉錄成 MP3格式並保存在硬碟上,雖然用戶能夠從一些音樂網站如"www.cdnow.com"和"www.amguide.com"下載該CD光碟的唱片封面頁,但用戶只能手工一個一個地將這些封面頁添加至每個音樂文件夾中。這將花費較長時間,而且一旦用戶重新安裝操作系統,就只好重復上述復雜的操作。
如何解決這一難題呢?其實並不復雜,當用戶下載音樂唱片封面圖片時,請將該圖片文件名保存為"folder.jpg"並放至相應的音樂文件夾內,這樣Windows XP系統會自動將其默認為該文件夾的縮略圖片,而且如果用戶使用Media Player for Windows XP(MPXP)播放器來播放音樂文件時,系統還會自動顯示出該唱片封面圖片。這樣操作之後即使用戶以後重新安裝操作系統也沒有問題。
此外,如果用戶有需求,還可以在保存上述提及的"folder.jpg"文件時再保存一個名為"albumartsmall.jpg"的較小的圖片文件,這樣做的好處是如果用戶使用MPXP播放器播放音樂文件,但播放器的窗口小於200 X 200像素,該播放器便可以直接顯示這幅較小的圖片,否則播放器需要對"folder.jpg"進行處理,調整其大小,以便顯示在較小的窗口,而這自然會對文件調用的速度產生一定影響。
25、便捷地硬碟碎片整理
電腦使用一段時間後硬碟會產生大量文件碎片,用戶需要定期調用磁碟碎片整理程序進行清理。為此,這里向你提供一個可以讓你更加便捷地調用整理硬碟碎片程序的方法。
用戶使用「記事本」編輯一個名為"context_defrag.inf"的注冊表導入文件,並在該文件中輸入下列內容:
; context_defrag.INF
; Adds Defrag to the right click context menu in Windows XP
[version]
signature="$CHICAGO$"
[DefaultInstall]
AddReg=AddMe
[AddMe]
HKCR,"Drive\Shell\Defrag\command",,,"DEFRAG.EXE %1"
編輯完畢後用滑鼠右擊該文件並選擇「安裝」,安裝後即在Windows XP操作系統內添加了一個文本菜單。用戶需要整理硬碟時,打開「我的電腦」,用滑鼠右擊選中需要進行整理的硬碟盤符,從彈出的文本菜單中選擇 "defrag"項,這時系統就會自動調用內置的"defrag.exe"程序整理硬碟。
如果用戶需要將上述安裝到系統注冊表的信息刪除,可使用regedit.exe注冊表編輯器進行編輯修改,具體操作為尋找到"HKEY_CLASSES_ROOT\Drive\shell\"目錄項,刪除其中的"defrag"文件夾,最後關閉注冊表編輯器。
26、清除共享文件夾
Windows XP操作系統一個比較不友好的用戶界面是在「我的電腦」窗口上半部分顯示所有共享的文件夾,如果用戶設置的共享文件夾較多,每當打開「我的電腦」窗口時,就會列有很多共享文件夾信息。如何刪除這些信息顯示呢?使用注冊表編輯器,並尋找這個主鍵"HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ My Computer \ NameSpace \ DelegateFolders",在該主鍵下有一個名為
{59031a47-3f72-44a7-89c5-5595fe6b30ee}的副鍵,刪除該副鍵便可清除那些共享文件夾信息。上述修改無需重新啟動便可生效。
27、顯示共享設置標簽
Windows 2000操作系統中用戶在設置文件夾的共享屬性時操作非常簡便,只需用滑鼠右擊該文件夾並選擇屬性,就可以看到共享設置標簽。而在Windows XP系統設置文件夾共享時則比較復雜,用戶無法通過上述操作看到共享設置標簽。具體的修改方法如下:打開「我的電腦」中的「工具」,選擇「文件夾屬性」,調出「查看」標簽,在「高級設置」部分滾動至最底部將"Use simple file sharing (Recommended)"前面的選擇取消,另外如果選項欄里還有"Mickey Mouse"項也將其選擇取消。這樣修改後用戶就可以象使用Windows 2000一樣對文件夾屬性進行方便修改了。
28、調用系統聲音方案
與以往的Windows操作系統相比,Windows XP提供了更加優秀的聲音方案,但系統默認卻沒有調用該方案。為了激活該方案,我們需要執行下列操作:打開「控制面板」,選擇「聲音、語音、音頻設備」 項,從中找到「修改聲音方案」的任務欄,在打開的對話框中選擇「Windows默認」,此時系統會提示用戶是否保存以前的聲音方案設置,用戶可以選擇 「否」並點擊「確認」,完成修改
29、加快開始菜單的顯示
Windows XP系統默認的開始菜單顯示較慢,但用戶可以通過編輯注冊鍵值來加快顯示,具體方法是:打開注冊表編輯器,尋找"HKEY_CURRENT_USER \ Control Panel \ Desktop \ MenuShowDelay"主鍵,系統默認值為400,用戶可以根據自己的喜好適當調小該鍵值,最低可設為「0」。如果此方法無效,請從「控制面板」中選擇「顯示屬性」,在「顯示效果」中選擇「高級」,將"show menu shadow"項的選擇取消,這樣便可以加快開始菜單的顯示了。
30、讓歡迎窗口更清晰
Windows XP系統的顯示效果得到了較大提高,這主要是基於它使用了名為"ClearType"的清晰化技術,該技術特別讓使用筆記本電腦及液晶顯示器的用戶在運行 Windows XP操作系統時感受到與以往系統不同的效果。但由於該清晰效果只有當Windows啟動完畢後才能調用,因此在系統啟動過程中的歡迎窗口仍然無法實現這一效果。為了使歡迎窗口更加清晰,用戶可以使用注冊表編輯器進行修改,尋找到這兩個主鍵
"(default user) HKEY_USERS \ .Default \ Control Panel \ Desktop \ FontSmoothing
(String value)"和"HKEY_USERS \ .Default \ Control Panel \ Desktop \ FontSmoothingType
(Hexadecimal DWORD value)",將鍵值修改為「2」,這樣便可以實現清晰顯示效果了。
31、啟動時禁止自動調用"Windows Messenger"
為了推廣微軟公司推出的即時聊天程序"Windows Messenger",Windows XP操作系統的默認設置是在系統啟動時便調用該程序。但如果你並不習慣使用該程序,可以通過刪除"HKEY_CURRENT_USER\Software \Microsoft\Windows\CurrentVersion\Run\MSMSGS"此鍵來實現。
32、在關機對話框中顯示「休眠」
Windows XP的默認設置是在關機對話框中沒有讓系統進入休眠狀態的選項,而顯示該選項的操作非常簡單,當出現關機對話框時,用戶可以同時按下"SHIFT"鍵,這樣「休眠」選項便出現了。
二、硬體優化
1、內存性能優化
Windows XP中有幾個選項可以優化內存性能,它們全都在注冊表下面位置: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
1)禁用內存頁面調度(Paging Executive)
在正常情況下,XP會把內存中的片斷寫入硬碟,我們可以阻止它這樣做,讓數據保留在內存中,從而提升系統性能。要注意的是,擁有很多內存的用戶(256M以上)才好使用這個設置。這個設置的名字正如它的功能一樣,叫「DisablePagingExecutive」。把它的值從0改為1就可以禁止內存頁面調度了。
2)提升系統緩存:把LargeSystemCache鍵值從0改為1,Windows XP就會把除了4M之外的系統內存全部分配到文件系統緩存中,這意味著XP的內核能夠在內存中運行,大大提高系統速度。剩下的4M內存是用來做磁碟緩存的,在一定條件下需要的時候,XP還會分配更多一些。一般來說,這項優化會使系統性能得到相當的提升,但也有可能會使某些應用程序性能降低。正如前面所說的,必須有256M以上的內存,才好激活LargeSystemCache,否則不要動它。
3)輸入/輸出性能:這個優化只對server用戶才有實在意義——它能夠提升系統進行大容量文件傳輸時的性能。在默認情況下,這個鍵值在注冊表中是不存在的,必須自己建一個DWORD(雙位元組值)鍵值,命名為IOPageLockLimit。多數人在使用這項優化時都發現8到16M位元組之間性能最好,具體設什麼值,可以設進去試試看哪個值可以獲得最佳性能。記住這個值是用位元組來計算的,因此,譬如你要分配12M的話,就是12 * 1024 * 1024,也就是12582912。跟前面的內存優化一樣,只有當你的內存大於256M的時候才好更改這里的值。
2、打開DMA:到裝置管理員里選擇IDE ATA/ATAPI controllers ,到Primary/Secondary IDE Channel裡面的進階設定 ,將所有的轉送模式都設定為使用DMA(如果可用的話) ,系統就會自動打開DMA支援(在BIOS里也應該要先設為支援DMA)
3、XP里關閉光碟機自啟動(Autorun)功能:打開:我的電腦,在「移動存儲設備」下,右鍵單擊CD-ROM 驅動器,然後單擊「屬性」,看到「自動播放」選項卡了么?自己去改吧。
4、設置CPU:Windows XP無法自動檢測處理器的二級緩存容量,需要我們自己在注冊表中手動設置,首先打開注冊表(運行中輸入「Regedit」),打開:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\,選擇「SecondLevelDataCache」,根據自己所用的處理器設置即可,例如PIII Coppermine/P4 Willamette是「256」,Athlon XP是「384」,P4 Northwood是「512」
5、XP安裝驅動程式時,往往會出現一個窗口,說這個程序沒有經過微軟的驗證,我們可以在控制面板——系統——硬體——設備管理員——驅動程序簽名,看到了選項了么,知道該怎麼做了吧。
6、為IRQ中斷請求排優先次序
計算機的每一個主要部件都設了個IRQ中斷號。這里就是要通過修改每個IRQ請求的優先次序達到優化目的。這里主要的優化對象是系統/CMOS實時鍾,它通過主板來提升性能。首先,要確定你想要哪個組件獲得更高的性能,然後找到這個硬體正在使用的IRQ中斷號。怎麼找呢?打開控制面板里的系統屬性(也可以按鍵盤上的Windows+Break熱鍵組合打開它)。選中「硬體」選項卡,然後點擊「設備管理器」按鈕。右鍵點擊要查IRQ號的組件,選擇 「屬性」,然後點擊「資源」選項卡。這里可以看到設備正在使用的IRQ中斷號(如果沒有IRQ中斷號,選擇另一個設備)。把中斷號記下來,然後運行注冊表編輯器regedit,找到注冊表中的HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ PriorityControl 位置。我們要在這里建立一個名為IRQ#Priority(其中「#」是具體的IRQ中斷號)的DWORD雙位元組值,然後把它的值設為1。譬如說,我的系統CMOS實時鍾的IRQ中斷號是8,我要建立的鍵名就是IRQ8Priority。重新啟動計算機之後,就會發現剛優化過的組件性能有所提高。筆者強烈建議用這個方法優化系統CMOS實時鍾,因為它能改善整塊主板的性能。當然也可以把多個IRQ中斷號優先順序提高,但這樣做的效果沒那麼好,而且有可能造成系統不穩定。要把這個優化設置撤消的話,只要把剛才建立的注冊表鍵值刪掉就OK了。