日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mediumtext和string转换_数据库用varchar和text的差别

發布時間:2023/12/2 数据库 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mediumtext和string转换_数据库用varchar和text的差别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數據庫用varchar和text的差別

發布時間:2018-05-09 20:41,

瀏覽次數:1268

, 標簽:

varchar

text

最近有幾個同學問我varchar和text有啥別嗎,這個問題,以前說真的也沒太多的整理,以前遇到text在設計中就是盡可能的拆到另一個表中,保持主表盡量的瘦小,可以讓innodb

bp緩存更多的數據。

今天借次機會系統整理一下,主要從存儲上,最大值,默認值幾個方面進行比較。

BTW: 從ISO SQL:2003上講VARCHAR是一個標準型,但TEXT不是(包括tinytext).varchar在MySQL

5.0.3之前只支持0-255byte, 在5.0.3之后才支持到0-65535byte.

從存儲上講:

- text 是要要進overflow存儲。 也是對于text字段,不會和行數據存在一起。但原則上不會全部overflow ,

會有768字節和原始的行存儲在一塊,多于768的行會存在和行相同的Page或是其它Page上。 - varchar

在MySQL內部屬于從blob發展出來的一個結構,在早期版本中innobase中,也是768字節以后進行overfolw存儲。 -

對于Innodb-plugin后: 對于變長字段處理都是20Byte后進行overflow存儲 (在新的row_format下:dynimic

compress)

說完存儲后,說一下使用這些大的變長字段的缺點:

- 在Innobase中,變長字段,是盡可能的存儲到一個Page里,這樣,如果使用到這些大的變長字段,會造成一個Page里能容納的行

數很少,在查詢時,雖然沒查詢這些大的字段,但也會加載到innodb buffer pool中,等于浪費的內存。 (buffer pool

的緩存是按page為單位)(不在一個page了會增加隨機的IO) -

在innodb-plugin中為了減少這種大的變長字段對內存的浪費,引入了大于20個字節的,都進行overflow存儲,

而且希望不要存到相同的page中,為了增加一個page里能存儲更多的行,提高buffer pool的利用率。 這也要求我們,

如果不是特別需要就不要讀取那些變長的字段。

那問題來了? 為什么varchar(255+)存儲上和text很相似了,但為什么還要有varchar, mediumtext, text這些類型?

(從存儲上來講大于255的varchar可以說是轉換成了text.這也是為什么varchar大于65535了會轉成mediumtext)

我理解:這塊是一方面的兼容,另一方面在非空的默認值上varchar和text有區別。從整體上看功能上還是差別的。

這里還涉及到字段額外開銷的:

- varchar 小于255byte 1byte overhead - varchar 大于255byte 2byte overhead -

tinytext 0-255 1 byte overhead - text 0-65535 byte 2 byte overhead - mediumtext

0-16M 3 byte overhead - longtext 0-4Gb 4byte overhead

備注?overhead是指需要幾個字節用于記錄該字段的實際長度。

從處理形態上來講varchar 大于768字節后,實質上存儲和text差別不是太大了。 基本認為是一樣的。

另外從8000byte這個點說明一下: 對于varcahr, text如果行不超過8000byte(大約的數,innodb data page的一半)

,overflow不會存到別的page中?;谏厦娴奶匦钥梢钥偨Y為text只是一個MySQL擴展出來的特殊語法有兼容的感覺。

默認值問題:

- 對于text字段,MySQL不允許有默認值。 - varchar允許有默認值

總結:

根據存儲的實現: 可以考慮用varchar替代tinytext 如果需要非空的默認值,就必須使用varchar

如果存儲的數據大于64K,就必須使用到mediumtext , longtext varchar(255+)和text在存儲機制是一樣的

需要特別注意varchar(255)不只是255byte ,實質上有可能占用的更多。

特別注意,varchar大字段一樣的會降低性能,所以在設計中還是一個原則大字段要拆出去,主表還是要盡量的瘦小

源碼中類型:

+--Field_str (abstract) | +--Field_longstr | | +--Field_string | |

+--Field_varstring | | +--Field_blob | | +--Field_geom | | | +--Field_null |

+--Field_enum | +--Field_set

(末完待續,也希望大家一塊討論一下)

參考:

http://yoshinorimatsunobu.blogspot.com/2010/11/handling-long-textsblobs-in-innodb-1-to.html

http://nicj.net/mysql-text-vs-varchar-performance/

http://www.pythian.com/blog/text-vs-varchar/

測試SQL及方法

create table tb_01( c1 varchar(255), c2 varchar(255), c3 varchar(255), c4

varchar(255), c5 varchar(255), c6 varchar(255), c7 varchar(255), c8

varchar(255), c9 varchar(255), c10 varchar(255), c11 varchar(255)

)engine=Innodb; insert into tb_01(c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11)

values(repeat('吳',255),repeat('吳',255),repeat('吳',255),repeat('吳',255),repeat('吳',255),repeat('吳',255),repeat('吳',255),repeat('吳',255),repeat('吳',255),repeat('吳',255),repeat('吳',255));

ERROR 1118 (42000): Row size too large (> 8126). Changing some columns to

TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In

current row format, BLOB prefix of 768 bytes is stored inline.

(testing)root@localhost [wubx]> set global innodb_file_format=BARRACUDA;

Query OK, 0 rows affected (0.00 sec) (testing)root@localhost [wubx]> alter

table tb_01 row_format=dynamic; Query OK, 0 rows affected (0.19 sec) Records: 0

Duplicates: 0 Warnings: 0 (testing)root@localhost [wubx]> insert into

tb_01(c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11)

values(repeat('吳',255),repeat('吳',255),repeat('吳',255),repeat('吳',255),repeat('吳',255),repeat('吳',255),repeat('吳',255),repeat('吳',255),repeat('吳',255),repeat('吳',255),repeat('吳',255));

Query OK, 1 row affected (0.00 sec) set global innodb_file_format=Antelope;

create table tb_02( c1 varchar(2000), c2 varchar(2000), c3 varchar(2000), c4

varchar(2000), c5 varchar(2000), c6 varchar(2000), c7 varchar(2000), c8

varchar(2000) )engine=Innodb; insert into tb_02(c1, c2, c3,c4,c5,c6,c7,c8)

values(repeat('吳',2000),repeat('吳',2000),repeat('吳',2000),repeat('吳',2000),repeat('吳',2000),repeat('吳',2000),repeat('吳',2000),repeat('吳',2000)

); create table tb_03( c1 text, c2 text, c3 text, c4 text, c5 text, c6 text, c7

text, c8 text, c9 text, c10 text, c11 text )engine=Innodb; insert into

tb_03(c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11)

values(repeat('吳',255),repeat('吳',255),repeat('吳',255),repeat('吳',255),repeat('吳',255),repeat('吳',255),repeat('吳',255),repeat('吳',255),repeat('吳',255),repeat('吳',255),repeat('吳',255));

(testing)root@localhost [wubx]> insert into

tb_03(c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11)

values(repeat('吳',255),repeat('吳',255),repeat('吳',255),repeat('吳',255),repeat('吳',255),repeat('吳',255),repeat('吳',255),repeat('吳',255),repeat('吳',255),repeat('吳',255),repeat('吳',255));

ERROR 1118 (42000): Row size too large (> 8126). Changing some columns to

TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In

current row format, BLOB prefix of 768 bytes is stored inline. set global

innodb_file_format=BARRACUDA; alter table tb_03 row_format=dynamic;

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的mediumtext和string转换_数据库用varchar和text的差别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 色网在线看| 欧美极品在线观看 | 中文毛片无遮挡高潮免费 | 国产tv在线观看 | 亚洲伦理在线 | 国产精品影音先锋 | 国产精品色婷婷99久久精品 | 99国产精品白浆在线观看免费 | 精品少妇3p| 一本亚洲 | 欧美久久久久久 | 秋霞网一区二区三区 | 亚洲精品一区二区三区中文字幕 | 国产睡熟迷奷系列精品视频 | 国产理论片在线观看 | 亚洲高清在线免费观看 | 999精品视频 | 日日噜噜噜夜夜爽爽狠狠视频97 | 国产高清毛片 | 国产精品一区二区毛片 | 亚洲美女中文字幕 | 久久久一级 | 另类少妇人与禽zozz0性伦 | 亚洲欧洲另类 | 3p在线视频| 国产精品日韩在线 | 97精品人妻麻豆一区二区 | 欧美精品网站 | av在线免费观看网址 | 亚洲国产综合网 | 欧美xxxxxx片免费播放软件 | 超碰97人人射妻 | 18禁网站免费无遮挡无码中文 | 成人福利在线播放 | 国产视频一区在线 | 精品动漫一区二区三区的观看方式 | 打白嫩屁屁网站视频短裙 | 精品人妻久久久久一区二区三区 | 国产精品夜夜躁视频 | 免费观看的黄色网址 | 黄色网址进入 | 蜜桃精品久久久久久久免费影院 | 天堂在线日本 | 天天干视频 | 日本αv| 国产精品815.cc红桃 | 日韩欧美成人一区二区三区 | 国产夫妻一区 | 口爆吞精一区二区三区 | 欧美日韩一卡二卡三卡 | 国产欧美综合一区二区三区 | 99re这里只有 | a级欧美 | 波多野结衣www | 国产精品亚洲综合 | 善良的公与媳hd中文字 | 成人国产精品一区 | 毛片大全在线观看 | 国产嫩草av | 日日夜夜免费 | 久久97精品久久久久久久不卡 | 嫩草一区二区 | 亚洲av无码久久精品色欲 | 中国爆后菊女人的视频 | 国产精品大屁股白浆一区 | 欧美三级精品 | 国产不卡二区 | 国产精品sm调教免费专区 | 亚洲网av| 日日日视频| 日本熟妇毛茸茸丰满 | 美女久久久久久久久久 | 欧美日韩第一页 | 日本久久激情 | 五月婷婷啪啪 | 在线观看麻豆av | 亚洲天堂中文字幕在线观看 | 午夜性色福利影院 | av在线天堂网| 操操日 | 91伊人久久 | 久久美利坚 | 少妇高潮灌满白浆毛片免费看 | 丰满人妻综合一区二区三区 | 青草热视频 | 久操久操 | 日日碰狠狠添天天爽无码av | 国产女主播在线播放 | 男女av | 久久精品一区二 | 日韩在线视 | www.欧美亚洲| 熟女俱乐部一区二区 | 国产精品久久影院 | 91丨九色丨蝌蚪丨对白 | 婷婷国产 | 爽爽免费视频 | 亚洲一区av | 一区二区三区不卡在线观看 |