一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Mysql - 從MySQL得到最大的優化性能

從MySQL得到最大的優化性能

2019-10-15 14:24MySQL技術網 Mysql

優化是一項復雜的任務,因為它最終需要對整個系統的理解.當用你的系統/應用的小知識做一些局部優化是可能的時候,你越想讓你的系統更優化,你必須知道它也越多.因此,本章將試圖解釋并給出優化 MySQL 的不同方法的一些例子.但是

優化是一項復雜的任務,因為它最終需要對整個系統的理解.當用你的系統/應用的小知識做一些局部優化是可能的時候,你越想讓你的系統更優化,你必須知道它也越多.因此,本章將試圖解釋并給出優化MySQL的不同方法的一些例子.但是記住總是有某些(逐漸變難)是系統更快的方法留著去做.為了使一個系統更快的最重要部分當然是基本設計.你也需要知道你的系統將做這樣的事情,那就是你的瓶頸.最常見的瓶頸是:

磁盤尋道.磁盤花時間找到一個數據,用在1999年的現代磁盤其平均時間通常小于10ms,因此理論上我們能大約一秒尋道1000次.這個時間用新磁盤提高很慢并且很難對一個表優化.優化它的方法是將數據散布在多個磁盤上.當磁盤在我們需要讀數據的正確位置時,磁盤讀/寫.用1999年的現代,一個磁盤傳輸類似10-20Mb/s.這必尋道更容易優化,因為你能從多個磁盤并行地讀.CPU周期.當我們讀數據進內存時,(或如果它已經在那里)我們需要處理它以達到我們的結果.當我們有相對內存較小的表時,這是最常見的限制因素,但是用小表速度通常不是問題.內存帶寬.當CPU需要超出適合cpu緩存的數據時,緩存帶寬就成為內存的一個瓶頸.這是對大多數系統的一個不常見的瓶頸但是你應該知道它.10.2系統/編譯時和啟動參數的調節我們以系統級的東西開始,因為這些決策的某一些很早就做好了.在其他情況下,快速瀏覽這部分可能就夠了,因為它對大收獲并不重要,但是有一個關于在這個層次上收獲有多大的感覺總是好的.使用的缺省OS確實重要!為了最大程度地使用多CPU,應該使用Solaris(因為線程工作得確實不錯)或Linux(因為2.2本的核心又確實不錯的SMP支持).而且在32位的機器上,Linux缺省有2G的文件大小限制.當新的文件系統被釋出時(XFS),希望這不久被修正.因為我們沒在很多平臺上運行生產MySQL,我們忠告你在可能選擇它前,測試你打算運行的平臺.

其他建議:

如果你有足夠的RAM,你能刪除所有交換設備.一些操作系統在某些情況下將使用一個SWAP設備,即使你有空閑的內存.使用--skip-locking的MySQL選項避免外部鎖定.注意這將不影響MySQL功能,只要它僅運行在一個服務器上.只要在你運行myisamchk以前,記得要停掉服務器(或鎖定相關部分).在一些系統上這個開關是強制的,因為外部鎖定不是在任何情況下都工作.當用MIT-pthreads編譯時,--skip-locking選項缺省為打開(on),因為flock()沒在所有的平臺上被MIT-pthreads充分支持.唯一的情況是如果你對同一數據運行MySQL服務器(不是客戶),你不能使用--skip-locking之時,否則對沒有先清掉(flushing)或先鎖定mysqld服務器的表上運行myisamchk.你仍然能使用LOCKTABLES/UNLOCKTABLES,即使你正在使用--skip-locking.

編譯和鏈接怎樣影響MySQL的速度

大多數下列測試在Linux上并用MySQL基準進行的,但是它們應該對其他操作系統和工作負載給出一些指示.當你用-static鏈接時,你得到最快的可執行文件.使用Unix套接字而非TCP/IP連接一個數據庫也可給出好一些的性能.在Linux上,當用pgcc和-O6編譯時,你將得到最快的代碼.為了用這些選項編譯“sql_yacc.cc”,你需要大約200M內存,因為gcc/pgcc需要很多內存使所有函數嵌入(inline).在配置MySQL時,你也應該設定CXX=gcc以避免包括libstdc++庫(它不需要).只通過使用一個較好的編譯器或較好的編譯器選項,在應用中你能得到一個10-30%的加速.如果你自己編譯SQL服務器,這特別重要!在Intel上,你應該例如使用pgcc或CygnusCodeFusion編譯器得到最大速度.我們已經測試了新的Fujitsu編譯器,但是它是還沒足夠不出錯來優化編譯MySQL.

這里是我們做過的一些測量表:

如果你以-O6使用pgcc并且編譯任何東西,mysqld服務器是比用gcc快11%(用字符串99的版本).如果你動態地鏈接(沒有-static),結果慢了13%.注意你仍能使用一個動態連接的MySQL庫.只有服務器對性能是關鍵的.如果你使用TCP/IP而非Unix套接字,結果慢7.5%.在一個SunSPARCstation10上,gcc2.7.3是比SunProC++4.2快13%.在Solaris2.5.1上,在單個處理器上MIT-pthreads比帶原生線程的Solaris慢8-12%.以更多的負載/cpus,差別應該變得更大.由TcX提供的MySQL-Linux的分發用pgcc編譯并靜態鏈接.

正如前面所述,磁盤尋道是一個性能的大瓶頸.當數據開始增長以致緩存變得不可能時,這個問題變得越來越明顯.對大數據庫,在那你或多或少地要隨機存取數據,你可以依靠你將至少需要一次磁盤尋道來讀取并且幾次磁盤尋道寫入.為了使這個問題最小化,使用有低尋道時間的磁盤.為了增加可用磁盤軸的數量(并且從而減少尋道開銷),符號聯接文件到不同磁盤或分割磁盤是可能的.使用符號連接這意味著你將索引/數據文件符號從正常的數據目錄鏈接到其他磁盤(那也可以被分割的).這使得尋道和讀取時間更好(如果磁盤不用于其他事情).見10.2.2.1使用數據庫和表的符號鏈接.分割分割意味著你有許多磁盤并把第一塊放在第一個磁盤上,在第二塊放在第二個磁盤上,并且第n塊在第(nmodnumber_of_disks)磁盤上,等等.這意味著,如果你的正常數據大小于分割大小(或完美地排列過),你將得到較好一些的性能.注意,分割是否很依賴于OS和分割大小.因此用不同的分割大小測試你的應用程序.見10.8使用你自己的基準.注意對分割的速度差異很依賴于參數,取決于你如何分割參數和磁盤數量,你可以得出以數量級的不同.注意你必須選擇為隨機或順序存取優化.為了可靠,你可能想要使用襲擊RAID0+1(分割+鏡像),但是在這種情況下,你將需要2*N個驅動器來保存N個驅動器的數據.如果你有錢,這可能是最好的選擇!然而你也可能必須投資一些卷管理軟件投資以高效地處理它.一個好選擇是讓稍重要的數據(它能再生)上存在RAID0磁盤上,而將確實重要的數據(像主機信息和日志文件)存在一個RAID0+1或RAIDN磁盤上.如果因為更新奇偶位你有許多寫入,RAIDN可能是一個問題.你也可以對數據庫使用的文件系統設置參數.一個容易的改變是以noatime選項掛裝文件系統.這是它跳過更新在inode中的最后訪問時間,而且這將避免一些磁盤尋道.

你可以從數據庫目錄移動表和數據庫到別處,并且用鏈接到新地點的符號代替它們.你可能想要這樣做,例如,轉移一個數據庫到有更多空閑空間的一個文件系統.如果MySQL注意到一個表是一個符號鏈接,它將解析符號鏈接并且使用其實際指向的表,它可工作在支持realpath()調用的所有系統上(至少Linux和Solaris支持realpath())!在不支持realpath()的系統上,你應該不同時通過真實路徑和符號鏈接訪問表!如果你這樣做,表在任何更新后將不一致.MySQL缺省不支持數據庫鏈接.只要你不在數據庫之間做一個符號鏈接,一切將工作正常.假定你在MySQL數據目錄下有一個數據庫db1,并且做了一個符號鏈接db2指向db1:

shell&>cd/path/to/datadir

shell&>ln-sdb1db2

現在,對在db1中的任一表tbl_a,在db2種也好象有一個表tbl_a.如果一個線程更新db1.tbl_a并且另一個線程更新db2.tbl_a,將有問題.如果你確實需要這樣,你必須改變下列在“mysys/mf_format.c”中的代碼:

if(!lstat(to,&stat_buff))/*Checkifit'sasymboliclink*/

if(S_ISLNK(stat_buff.st_mode)&&realpath(to,buff))

把代碼改變為這樣:

if(realpath(to,buff))

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 美女免费观看一区二区三区 | 思思99热久久精品在2019线 | 成人免费网站视频ww | 国产大片线上免费观看 | 香蕉tv亚洲专区在线观看 | 成人私人影院www片免费高清 | 久久er国产精品免费观看2 | 爆操 | 久久视频在线视频观看天天看视频 | 精品无码久久久久久久动漫 | tube性睡觉hd | 日韩一级片在线免费观看 | 欧美一卡2卡3卡四卡海外精品 | 91.久久| 红色毛片 | www.俺去啦| 免费高清www动漫视频播放器 | 52av我爱avhaose01好 | 亚洲成av人在线视 | 秋霞在线观看成人高清视频51 | 美日韩在线观看 | 欧美va天堂 | 韩国女主播在线大尺无遮挡 | 青青青国产精品国产精品久久久久 | 亚洲欧美在线观看首页 | 性欧美videosex18嫩 | 免费观看韩剧网站在线观看 | 波多野结衣伦理在线观看 | 极品虎白女在线观看一线天 | 护士的小嫩嫩好紧好舒服 | 九九九精品视频 | 欧美亚洲第一页 | 色一情一乱一伦 | 亚洲国产综合久久久无码色伦 | 亚洲欧美日韩成人一区在线 | 厨房play黄瓜进入 | 精品9e精品视频在线观看 | 精品99一区二区三区麻豆 | 亚州精品视频 | 日韩精品欧美高清区 | 四虎在线免费 |