close

MYSQL 網頁設計 技巧

MySQL伺服器為我地提供左豐富既參數,以調整伺服器滿足不同環境既要求。下面分別討論一下呢d參數:

  • 伺服器參數變量既設置。MySQL伺服器參數可在伺服器啟動時設置,在MySQL4.0.3及以後版本中,有d參數亦可以在線設置。在MySQL4.0.2及以後既版本裡,可以把一個變量名視為一個選項名來設置。如數據表緩衝區既尺寸由伺服器參數talbe_cache來設置。如果需把它設置為128,則可以在命令行裡增加

    --table_cache=128
    

    也可在選項文件中設置:

    [mysqld]
    table_cache=128       
    

    在命令行選項中'_'可寫'-',變成:

    --table-cache=128     #這種寫法更像一個標準選項
    

    還有一種係使用--set-variable或-O選項,如:

    --set-variable=table_cache=128
    or
    -O table_cache=128
    在選項文件中可寫成:
    [mysqld]
    set-variable=table_cache=128
    

    伺服器參數分為全局級和會話級兩個級別。全局級參數將影響整個伺服器,會話級參數則隻影響某給定客戶連接上的工作。如果某個變量同時存在於兩個級別,則伺服器在客戶建立連接時用全局變量既值去初始化相應既會話級參數,一旦客戶連接建立起來後,對全局參數所作的修改唔會影響到相應的會話級參數當前值。設置全局參數和會話級參數既語句:

    全局級:
    mysql> SET GLOBAL variable = value;
    mysql> SET @@GLOBAL.variable = value;
    會話級:
    mysql> SET SESSION variable = value;
    mysql> SET @@SESSION.variable = value;
    默認不帶級別限定符的SET語句修改的參數屬會話級,如:
    mysql> SET variable = value;
    mysql> SET @@variable = value;
    可用一條SET語句設置多個參數,參數間用逗號分隔,如:
    SET SESSION variable = value1,value2,value3;
    

    SESSION和LOCAL是同義語,可用LOCAL代替SESSION,如:@@LOCAL

    具備SUPER權限才能設置全局參數,新設置值的效力將持續到該參數被再次修改或伺服器退出。設置會話級參數不用特殊的權限,新設置值的效力將持續到該值被再次修改或連接斷開。顯示參數的語句如下:

    SHOW GLOBAL VARIABLES;
    SHOW GLOBAL VARIABLES LIKE 'TEST';
    SHOW SESSION VARIABLES;
    SHOW SESSION VARIABLES LIKE 'TEST';
    如不帶限定符,則返回會話級參數,如會話級參數不存在則返回全局級參數。
    也可用命令行方式顯示伺服器參數變量,如:
    % mysqladmin variables
    
  • 下面介紹一些MySQL伺服器通用的參數變量:

    • back_log,當多個客戶同時連接伺服器時,客戶處理過程需進入一個隊列排隊等待伺服器處理。該值定義伺服器等待處理隊列長度的最大值,如果站點訪問量大,需加大該值。

    • delayed_queue_size,在實際插入數據表前,來自insert delayed語句的數據行會進入一個隊列等待伺服器處理。該值定義該隊列能容納的數據行的最大個數。當隊列滿時,會阻塞後續的語句。加大該值能提高insert delayed語句的執行速度。

    • flush_time,自動存盤間隔。如果系統經常死機或重啟,把這個變量設置為一個適當的非零值,使MySQL伺服器每隔flush_time稱去刷新一次數據表緩衝區,將其中的資訊寫入磁碟。這將導致系統性能下降,但可減少數據表被破壞或丟失數據的概率。在命令行上用--flush選項啟動伺服器可使數據表在每次修改後被自動存盤。

    • key_buffer_size,用來容納索引塊的緩衝區的長度。加大該值可加快索引創建和修改操作的速度,該索引緩衝區越大,在內存中找到鍵值的可能性就越大,讀盤次數就越少。MySQL3.23前的版本裡,該參數叫key_buffer。3.23版本之後,兩種叫法都可以。

    • max_allowed_packet,伺服器與客戶程式之間通信時使用的緩衝區在最大值。MySQL 4版本之前,該最大值可取16MB,MySQL 4版本以後,該值的最大值是1GB。如果客戶端與伺服器需傳送大容量的數據,如BLOB或TEXT值,就要加大該值。客戶端也有一個同名的變量,默認是16MB,該值也要加大。客戶端的啟動命令為:

      % mysql --set-variable=max_allowed_packet=64M
      
    • max_connections,允許同時打開的連接數,如果站點繁忙,需加大該值。

    • table_cache,數據表緩存區的尺寸。加大該值可使伺服器能夠同時打開更多的數據表,從而減少文件打開/關閉操作的次數。

    注意:加大max_connections和table_cache參數的值,會使伺服器佔用更多的文件描述符。運行多個伺服器可繞過該限制。對一些分配給每個客戶的資源變量,設置時不能過大,因為當連接數快速增長時會很快耗盡伺服器的資源,造成伺服器性能下降。

  • InnoDB處理程式變量:

    • innodb_buffer_pool_size,InnoDB數據庫緩衝池的大小,如果有足夠的內存,可把該值設置得大些以減少讀盤操作。

    • innodb_log_file_size和innodb_log_files_in_group,前者設置日誌文件的長度,後者設置日誌文件的個數。InnoDB日誌文件的總長度是兩者的乘積,它的總長度不得超過4GB。

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 dettori 的頭像
    dettori

    Web Design

    dettori 發表在 痞客邦 留言(0) 人氣()