<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 優化服務器硬件 ### 配置較大的內存 足夠大的內存,是提高MySQL數據庫性能的方法之一.內存的速度比磁盤I/O快,可以通過增加系統的緩沖區容量,使數據再內存停留的事件更長,以減少磁盤I/O ## 單機MySQL數據庫的優化 ### 服務器硬件對MySQL性能的影響 #### 磁盤尋道能力 (磁盤I/O) 我們現在上的都是SAS15000轉的硬盤。MySQL每秒鐘都在進行大量、復雜的查詢操作,對磁盤的讀寫量可想而知。所以,通常認為磁 盤I/O是制約MySQL性能的最大因素之一,對于日均訪 問量在100萬PV以上的Discuz!論壇,由于磁盤I/O的制約,MySQL的性能會非常低下!解決這一制約因素可以考慮以下幾種解決方案: 使用RAID1+0磁盤陣列,注意不要嘗試使用RAID-5,MySQL在RAID-5磁盤陣列上的效率不會像你期待的那樣快。 #### CPU 對于MySQL應用,推薦使用DELL R710,E5620 @2.40GHz(4 core)* 2 ,我現在比較喜歡DELL R710,也在用其作Linuxakg 虛擬化應用; #### 物理內存 對于一臺使用MySQL的Database Server來說,服務器內存建議不要小于2GB,推薦使用4GB以上的物理內存,不過內存對于現在的服務器而言可以說是一個可以忽略的問題,工作中遇到高端服務器基本上內存都超過了32G。我們工作中用得比較多的數據庫服務器是HP DL580G5和DELL R710,穩定性和性能都不錯;特別是DELL R710,我發現許多同行都是采用它作數據庫的服務器,所以重點推薦下。 ### MySQL的線上安裝 我建議采取編譯安裝的方法,這樣性能上有較大提升,服務器系統我建議用64bit的Centos,源碼包的編譯參數會默 認以Debgu模式生成二進制代碼,而Debug模式給MySQL帶來的性能損失是比較大的,所以當我們編譯準備安裝的產品代碼時,一定不要忘記使用“— without-debug”參數禁用Debug模式。而如果把—with-mysqld-ldflags和—with-client-ldflags二 個編譯參數設置為—all-static的話,可以告訴編譯器以靜態方式編譯和編譯結果代碼得到最高的性能。使用靜態編譯和使用動態編譯的代碼相比,性能 差距可能會達到5%至10%之多。編譯參數,特列如下,供大家參考 ```shell   ./configure –prefix=/usr/local/mysql –without-debug –without-bench –enable-thread-safe-client –enable-assembler –enable-profiling –with-mysqld-ldflags=-all-static –with-client-ldflags=-all-static –with-charset=latin1 –with-extra-charset=utf8,gbk –with-innodb –with-csv-storage-engine –with-federated-storage-engine –with-mysqld-user=mysql –with-server-suffix=-community –with-unix-socket-path=/usr/local/mysql/sock/mysql.sock ``` ### MySQL配置文件 MySQL服務配置參數在my.cnf或my.ini文件的[MySQLd]組中 |參數|說明| |-|-| |skip-locking|避免MySQL的外部鎖定,減少出錯幾率增強穩定性| |skip-name-resolve|禁止MySQL對外部連接進行DNS解析,使用這一選項可以消除MySQL進行DNS解析的時間。| |back_log|參數的值指出在MySQL暫時停止響應新請求之前的短時間內多少個請求可以被存在堆棧中。 如果系統在一個短時間內有很多連接,則需要增大該參數的值,該參數值指定到來的TCP/IP連接的偵聽隊列的大小。不同的操作系統在這個隊列大小上有它自 己的限制。 試圖設定back_log高于你的操作系統的限制將是無效的。默認值為50。對于Linux系統推薦設置為小于512的整數。| |key_buffer_size|指定用于索引的緩沖區大小,增加它可得到更好的索引處理性能。對于內存在4GB左右的服務器該參數可設置為256M或384M。注意:該參數值設置的過大反而會是服務器整體效率降低!| |sort_buffer_size|查詢排序時所能使用的緩沖區大小。注意:該參數對應的分配內存是每連接獨占,如果有100個連接,那么實際分配的總共排序緩沖區大小為100 × 6 = 600MB。所以,對于內存在4GB左右的服務器推薦設置為6-8M。| |read_buffer_size|讀查詢操作所能使用的緩沖區大小。和sort_buffer_size一樣,該參數對應的分配內存也是每連接獨享。| |join_buffer_size|聯合查詢操作所能使用的緩沖區大小,和sort_buffer_size一樣,該參數對應的分配內存也是每連接獨享。| |query_cache_size|指定MySQL查詢緩沖區的大小。可以通過在MySQL控制臺觀察,如果Qcache_lowmem_prunes的值非常大,則表明經常出現緩沖不 夠 的情況;如果Qcache_hits的值非常大,則表明查詢緩沖使用非常頻繁,如果該值較小反而會影響效率,那么可以考慮不用查詢緩 沖;Qcache_free_blocks,如果該值非常大,則表明緩沖區中碎片很多。| |max_connections|指定MySQL允許的最大連接進程數。如果在訪問論壇時經常出現Too Many Connections的錯誤提 示,則需要增大該參數值。| |wait_timeout|指定一個請求的最大連接時間,對于4GB左右內存的服務器可以設置為5-10。| |thread_concurrency |該參數取值為服務器邏輯CPU數量x2,在本例中,服務器有2顆物理CPU,而每顆物理CPU又支持H.T超線程,所以實際取值為4x2=8;這個目前也是雙四核主流服務器配置。| |skip-networking|開啟該選項可以徹底關閉MySQL的TCP/IP連接方式,如果WEB服務器是以遠程連接的方式訪問MySQL數據庫服務器則不要開啟該選項!否則將無法正常連接!| |table_cache|#物理內存越大,設置就越大。默認為2402,調到512-1024最佳| |tmp_table_size|臨時表大小,默認16M,調到64M最佳| |read_buffer_size|表示每個線程連續掃描時為掃描的每個表分配的緩沖區的大小,默認64K| 多情況需要具體情況具體分析 一、如果Key_reads太大,則應該把my.cnf中Key_buffer_size變大,保持Key_reads/Key_read_requests至少1/100以上,越小越好。 二、如果Qcache_lowmem_prunes很大,就要增加Query_cache_size的值。很多時候我們發現,通過參數設置進行性能優化所帶來的性能提升,可能并不如許多人想象的那樣產生質的飛躍,除非是之前的設置存在嚴重不合理的情況。我們 不能將性能調優完全依托于通過DBA在數據庫上線后進行的參數調整,而應該在系統設計和開發階段就盡可能減少性能問題。 ## 總結 如果單MySQL的優化始終還是頂不住壓力時,這個時候我們就必須考慮MySQL的高可用架構 ### MySQL Cluster 優勢:可用性非常高,性能非常好。每份數據至少可在不同主機存一份拷貝,且冗余數據拷貝實時同步。但它的維護非常復雜,存在部分Bug,目前還不適合比較核心的線上系統,所以這個我不推薦。 ### DRBD磁盤網絡鏡像方案 優勢:軟件功能強大,數據可在底層快設備級別跨物理主機鏡像,且可根據性能和可靠性要求配置不同級別的同步。IO操作保持順序,可滿足數據庫對數據一致性的苛刻要求。但非分布式文件系統環境無法支持鏡像數據同時可見,性能和可靠性兩者相互矛盾,無法適用于性能和可靠性要求都比較苛刻的環境,維護成本高于 MySQL Replication。另外,DRBD也是官方推薦的可用于MySQL高可用方案之一,所以這個大家可根據實際環境來考慮是否部署。 ### MySQL Replication 在實際應用場景中,MySQL Replication是使用最為廣泛的一種提高系統擴展性的設計手段。眾多的MySQL使用者通過Replication功能提升系統的擴展性后,通過 簡單的增加價格低廉的硬件設備成倍 甚至成數量級地提高了原有系統的性能,是廣大MySQL中低端使用者非常喜歡的功能之一,也是許多MySQL使用者選擇MySQL最為重要的原因。 比較常規的MySQL Replication架構也有好幾種,這里分別簡單說明下 MySQL Replication架構一:常規復制架構--Master-slaves,是由一個Master復制到一個或多個Salve的架構模式,主要用于讀壓力大的應用數據庫端廉價擴展解決方案,讀寫分離,Master主要負責寫方面的壓力。   MySQL Replication架構二:級聯復制架構,即Master-Slaves-Slaves,這個也是為了防止Slaves的讀壓力過大,而配置一層二級 Slaves,很容易解決Master端因為附屬slave太多而成為瓶勁的風險。   MySQL Replication架構三:Dual Master與級聯復制結合架構,即Master-Master-Slaves,最大的好處是既可以避免主Master的寫操作受到Slave集群的復制帶來的影響,而且保證了主Master的單點故障。   以上就是比較常見的MySQL replication架構方案,大家可根據自己公司的具體環境來設計 ,Mysql 負載均衡可考慮用LVS或Haproxy來做,高可用HA軟件我推薦Heartbeat。    MySQL Replication的不足:如果Master主機硬件故障無法恢復,則可能造成部分未傳送到slave端的數據丟失。所以大家應該根據自己目前的網絡 規劃,選擇自己合理的Mysql架構方案,跟自己的MySQL DBA和程序員多溝涌,多備份(備份我至少會做到本地和異地雙備份),多測試,數據的事是最大的事,出不得半點差錯,切記切記。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看