欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL中數(shù)據(jù)類型相關(guān)的優(yōu)化辦法

 更新時(shí)間:2015年07月08日 11:14:58   投稿:goldensun  
這篇文章主要介紹了MySQL中數(shù)據(jù)類型相關(guān)的優(yōu)化辦法,包括使用多列索引等相關(guān)的優(yōu)化方法,需要的朋友可以參考下

有助于效率的類型選擇

1、使你的數(shù)據(jù)盡可能小

最基本的優(yōu)化之一是使你的數(shù)據(jù)(和索引)在磁盤上(并且在內(nèi)存中)占據(jù)的空間盡可能小。這能給出巨大的改進(jìn),因?yàn)榇疟P讀入較快并且通常也用較少的主存儲(chǔ)器。如果在更小的列上做索引,索引也占據(jù)較少的資源。

你能用下面的技術(shù)使表的性能更好并且使存儲(chǔ)空間最?。?/p>

·盡可能地使用最有效(最小)的類型。MySQL有很多節(jié)省磁盤空間和內(nèi)存的專業(yè)化類型。

·如果可能使表更小,使用較小的整數(shù)類型。例如,MEDIUMINT經(jīng)常比INT好一些。

·如果可能,聲明列為NOT NULL。它使任何事情更快而且你為每列節(jié)省一位。注意如果在你的應(yīng)用程序中你確實(shí)需要NULL,你應(yīng)該毫無(wú)疑問(wèn)使用它,只是避免缺省地在所有列上有它。

2、使用定長(zhǎng)列,不使用可變長(zhǎng)列

這條準(zhǔn)則對(duì)被經(jīng)常修改,從而容易產(chǎn)生碎片的表來(lái)說(shuō)特別重要。例如,應(yīng)該選擇 CHAR 列而不選擇 VARCHAR 列。所要權(quán)衡的是使用定長(zhǎng)列時(shí),表所占用的空間更多,但如果能夠承擔(dān)這種空間的耗費(fèi),使用定長(zhǎng)行將比使用可變長(zhǎng)的行處理快得多。

3、將列定義為 NOT NULL

這樣處理更快,所需空間更少。而且有時(shí)還能簡(jiǎn)化查詢,因?yàn)椴恍枰獧z查是否存在特例 NULL。

4、考慮使用 ENUM 列

如果有一個(gè)只含有限數(shù)目的特定值的列,那么應(yīng)該考慮將其轉(zhuǎn)換為 ENUM 列。ENUM 列的值可以更快地處理,因?yàn)樗鼈冊(cè)趦?nèi)部是以數(shù)值表示的。

有關(guān)BLOB和TEXT類型
1、使用BLOB和TEXT類型的優(yōu)點(diǎn)

用 BLOB 存儲(chǔ)應(yīng)用程序中包裝或未包裝的數(shù)據(jù),有可能使原來(lái)需要幾個(gè)檢索操作才能完成的數(shù)據(jù)檢索得以在單個(gè)檢索操作中完成。而且還對(duì)存儲(chǔ)標(biāo)準(zhǔn)表結(jié)構(gòu)不易表示的數(shù)據(jù)或隨時(shí)間變化的數(shù)據(jù)有幫助。

2、使用BLOB和TEXT類型的可能弊端

另一方面,BLOB 值也有自己的固有問(wèn)題,特別是在進(jìn)行大量的 DELETE 或 UPDATE 操作時(shí)更是如此。刪除 BLOB 會(huì)在表中留下一個(gè)大空白,在以后將需用一個(gè)記錄或可能是不同大小的多個(gè)記錄來(lái)填充。

除非有必要,否則應(yīng)避免檢索較大的 BLOB 或 TEXT 值。例如,除非肯定WHERE 子句能夠?qū)⒔Y(jié)果恰好限制在所想要的行上,否則 SELECT * 查詢不是一個(gè)好辦法。這樣做可能會(huì)將非常大的 BLOB 值無(wú)目的地從網(wǎng)絡(luò)上拖過(guò)來(lái)。這是存儲(chǔ)在另一列中的 BLOB 標(biāo)識(shí)信息很有用的另一種情形??梢运阉髟摿幸源_定想要的行,然后從限定的行中檢索 BLOB 值。

3、必要的準(zhǔn)則

對(duì)容易產(chǎn)生碎片的表使用 OPTIMIZE TABLE
大量進(jìn)行修改的表,特別是那些含有可變長(zhǎng)列的表,容易產(chǎn)生碎片。碎片不好, 因?yàn)樗诖鎯?chǔ)表的磁盤塊中產(chǎn)生不使用的空間。隨著時(shí)間的增長(zhǎng),必須讀取更多的塊才能取到有效的行,從而降低了性能。任意具有可變長(zhǎng)行的表都存在這個(gè)問(wèn)題, 但這個(gè)問(wèn)題對(duì) BLOB 列更為突出,因?yàn)樗鼈兂叽绲淖兓浅4蟆=?jīng)常使用 OPTIMIZE TABLE 有助于保持性能不下降。

使用多列索引

多列索引列有時(shí)很有用。一種技術(shù)是根據(jù)其他列建立一個(gè)散列值,并將其存儲(chǔ)在一個(gè)獨(dú)立的列中,然后可通過(guò)搜索散列值找到行。這只對(duì)精確匹配的查詢有 效。(散列值對(duì)具有諸如“<”或“>=”這樣的操作符的范圍搜索沒(méi)有用處)。在MySQL 3.23版及以上版本中,散列值可利用 MD5( ) 函數(shù)產(chǎn)生。散列索引對(duì) BLOB 列特別有用。有一事要注意,在 MySQL 3.23.2 以前的版本中,不能索引 BLOB 類型。甚至是在 3.23.2 或更新的版本中,利用散列值作為標(biāo)識(shí)值來(lái)查找 BLOB 值也比搜索 BLOB 列本身更快。

將 BLOB 值隔離在一個(gè)獨(dú)立的表中

在某些情況下,將 BLOB 列從表中移出放入另一個(gè)副表可能具有一定的意義,條件是移出 BLOB 列后可將表轉(zhuǎn)換為定長(zhǎng)行格式。這樣會(huì)減少主表中的碎片,而且能利用定長(zhǎng)行的性能優(yōu)勢(shì)。

使用ANALYSE過(guò)程檢查表列
如果使用的是 MySQL 3.23 或更新的版本,應(yīng)該執(zhí)行 PROCEDURE ANALYSE( ),查看它所提供的關(guān)于表中列的信息

ANALYSE([max elements,[max memory]])

它檢驗(yàn)來(lái)自你的查詢的結(jié)果并返回結(jié)果的分析。

max elements(缺省256)是analyse將注意的每列不同值的最大數(shù)量。這被ANALYSE用來(lái)檢查最佳的列類型是否應(yīng)該是ENUM類型。

max memory(缺省8192)是在analyse嘗試尋找所有不同值的時(shí)候應(yīng)該分配給每列的最大內(nèi)存量。

SELECT ... FROM ... WHERE ... PROCEDURE ANALYSE([max elements,[max memory]])

例如:

mysql>SELECT * FROM student PROCEDURE ANALYSE();

mysql>SELECT * FROM student PROCEDURE ANALYSE(16,256);

相應(yīng)輸出中有一列是關(guān)于表中每列的最佳列類型的建議。第二個(gè)例子要求 PROCEDURE ANALYSE( ) 不要建議含有多于 16 個(gè)值或取多于 256 字節(jié)的 ENUM 類型(可根據(jù)需要更改這些值)。如果沒(méi)有這樣的限制,輸出可能會(huì)很長(zhǎng);ENUM 的定義也會(huì)很難閱讀。

根據(jù) PROCEDURE ANALYSE( ) 的輸出,會(huì)發(fā)現(xiàn)可以對(duì)表進(jìn)行更改以利用更有效的類型。如果希望更改值類型,使用 ALTER TABLE 語(yǔ)句即可。

相關(guān)文章

  • MySQL如何優(yōu)化索引

    MySQL如何優(yōu)化索引

    這篇文章主要介紹了MySQL如何優(yōu)化索引,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫(kù),感興趣的朋友可以了解下
    2020-12-12
  • MySQL修改默認(rèn)存儲(chǔ)引擎的實(shí)現(xiàn)方法

    MySQL修改默認(rèn)存儲(chǔ)引擎的實(shí)現(xiàn)方法

    下面小編就為大家?guī)?lái)一篇MySQL修改默認(rèn)存儲(chǔ)引擎的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • MySql 5.6.14 winx64配置方法(免安裝版)

    MySql 5.6.14 winx64配置方法(免安裝版)

    這篇文章主要介紹了MySql 5.6.14 winx64配置方法(免安裝版)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-08-08
  • windows10更換mysql8.0.17詳細(xì)教程

    windows10更換mysql8.0.17詳細(xì)教程

    這篇文章主要為大家介紹了windows10更換mysql8.0.17的詳細(xì)教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • mysql 5.7.19 winx64免安裝版配置教程

    mysql 5.7.19 winx64免安裝版配置教程

    這篇文章主要為大家詳細(xì)介紹了mysql 5.7.19 winx64免安裝版配置教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • mysql格式化小數(shù)保留小數(shù)點(diǎn)后兩位(小數(shù)點(diǎn)格式化)

    mysql格式化小數(shù)保留小數(shù)點(diǎn)后兩位(小數(shù)點(diǎn)格式化)

    今天遇到一個(gè)問(wèn)題,格式化浮點(diǎn)數(shù)的問(wèn)題,用format(col,2)保留兩位小數(shù)點(diǎn),出現(xiàn)一個(gè)問(wèn)題,例如下面的語(yǔ)句,后面我們給出解決方法
    2013-12-12
  • MySQL中的binary類型使用操作

    MySQL中的binary類型使用操作

    這篇文章主要介紹了MySQL中的binary類型使用操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • mysql主從復(fù)制配置過(guò)程

    mysql主從復(fù)制配置過(guò)程

    網(wǎng)站面臨大流量的情況下,數(shù)據(jù)庫(kù)讀寫(xiě)成了性能瓶頸。除了使用多級(jí)緩存外,進(jìn)行數(shù)據(jù)讀寫(xiě)分離,也是提高網(wǎng)站承載能力重要的手段。本文介紹mysql讀寫(xiě)分離、mysql主從復(fù)制配置過(guò)程。
    2020-09-09
  • mysql中字符串截取與拆分的實(shí)現(xiàn)示例

    mysql中字符串截取與拆分的實(shí)現(xiàn)示例

    mysql 字符串截取與拆分在很多地方都可以用得到,本文主要介紹了mysql中字符串截取與拆分的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-12-12
  • 深入理解sqlserver中的字符編碼、排序規(guī)則、nvarchar和varchar

    深入理解sqlserver中的字符編碼、排序規(guī)則、nvarchar和varchar

    本文主要介紹了深入理解sqlserver中的字符編碼、排序規(guī)則、nvarchar和varchar,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-09-09

最新評(píng)論