ntext在mysql_varchar和text说不清的那些事
數(shù)據(jù)庫(kù)定義到char類型的字段時(shí),不知道大家是否會(huì)猶豫一下,到底選char、nchar、varchar、nvarchar、text、ntext中哪一種呢?結(jié)果很可能是兩種,一種是節(jié)儉人士的選擇:最好是用定長(zhǎng)的,感覺比變長(zhǎng)能省些空間,而且處理起來會(huì)快些,無法定長(zhǎng)只好選用定長(zhǎng),并且將長(zhǎng)度設(shè)置盡可能地小;另一種是則是覺得無所謂,盡量用可變類型的,長(zhǎng)度盡量放大些。
小編在本文將跟大家分享MySQL中的varchar和text兩種字段類型~
1.varchar整個(gè)字段最長(zhǎng)只能是64k,根據(jù)編碼不通,能夠存儲(chǔ)最長(zhǎng)的字符數(shù)不同,另外表示varchar長(zhǎng)度的部分在最前端也需要占用1-2個(gè)字節(jié)
2.text類型分為4類,tinytext、text、mediumtext和longtext
分別是256字節(jié),65535字節(jié),16777216字節(jié)和4294967296(4GB)
text類型不能指定默認(rèn)值。在mysql中,對(duì)于text類型數(shù)據(jù)和varchar/char的存儲(chǔ)有些不同,text類型的數(shù)據(jù),將被存儲(chǔ)在元數(shù)據(jù)表之外地方,但是varchar/char將和其他列一起存儲(chǔ)在表數(shù)據(jù)文件中.
text數(shù)據(jù)類型實(shí)際上將會(huì)大幅度增加數(shù)據(jù)庫(kù)表文件尺寸,那么在物理存儲(chǔ)方面有些影響,同時(shí)對(duì)text數(shù)據(jù)的檢索和IO輸出也會(huì)增加對(duì)內(nèi)存的競(jìng)爭(zhēng).
3.text列存儲(chǔ)不放在元數(shù)據(jù)行,另外開辟存儲(chǔ)空間,行存儲(chǔ)的只是blob的指針,可能引起io爭(zhēng)用
4.盡量不用text類型,如果一定要使用,請(qǐng)與DBA商量之后使用
小結(jié):
根據(jù)存儲(chǔ)的實(shí)現(xiàn):可以考慮用varchar替代tinytext
如果需要非空的默認(rèn)值,就必須使用varchar
如果存儲(chǔ)的數(shù)據(jù)大于64K,就必須使用到mediumtext,longtext
varchar(255+)和text在存儲(chǔ)機(jī)制是一樣的
需要特別注意varchar(255)不只是255byte,實(shí)質(zhì)上有可能占用的更多。
特別注意,varchar大字段一樣的會(huì)降低性能,所以在設(shè)計(jì)中還是一個(gè)原則大字段要拆出去,主表還是要盡量的瘦小
小編結(jié)語:
很多時(shí)候,我們建議將text類型特別是長(zhǎng)度較大或者變更頻繁的數(shù)據(jù),存儲(chǔ)在其他專有的平臺(tái)中,例如NOSQL..本質(zhì)上說,不是mysql不適合存儲(chǔ)text,而是在太多的情況下我們期望mysql能夠更加高效的提供小數(shù)據(jù)查詢/事務(wù)處理。
更多內(nèi)容盡在課課家教育!
總結(jié)
以上是生活随笔為你收集整理的ntext在mysql_varchar和text说不清的那些事的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: barrons ap计算机科学,巴朗ap
- 下一篇: mysql长事务慢查询解决方案_MySQ