广告
返回顶部
首页 > 资讯 > 数据库 > MySQL text和varchar区别
  • 863
分享到

MySQL text和varchar区别

摘要

从存储上讲:   - text 是要要进overflow存储。 也是对于text字段,不会和行数据存在一起。但原则上不会全部overflow ,   会有768字节和原始的行存储在一块,多于768的行会存在和行相同的Page或


	MySQL text和varchar区别
[数据库教程]

从存储上讲:

  1.   - text 是要要进overflow存储。 也是对于text字段,不会和行数据存在一起。但原则上不会全部overflow ,
  2.   会有768字节和原始的行存储在一块,多于768的行会存在和行相同的Page或是其它Page上。
  3.    
  4.   - varchar 在Mysql内部属于从blob发展出来的一个结构,在早期版本中innobase中,也是768字节以后进行overfolw存储。
  5.    
  6.   - 对于Innodb-plugin后: 对于变长字段处理都是20Byte后进行overflow存储
  7.   (在新的row_fORMat下:dynimic compress)

说完存储后,说一下使用这些大的变长字段的缺点:

  1.   - 在Innobase中,变长字段,是尽可能的存储到一个Page里,这样,如果使用到这些大的变长字段,会造成一个Page里能容纳的行
  2.   数很少,在查询时,虽然没查询这些大的字段,但也会加载到innodb buffer pool中,等于浪费的内存。
  3.   (buffer pool 的缓存是按page为单位)(不在一个page了会增加随机的io
  4.    
  5.   - 在innodb-plugin中为了减少这种大的变长字段对内存的浪费,引入了大于20个字节的,都进行overflow存储,
  6.   而且希望不要存到相同的page中,为了增加一个page里能存储更多的行,提高buffer pool的利用率。 这也要求我们,
  7.   如果不是特别需要就不要读取那些变长的字段。

那问题来了? 为什么varchar(255+)存储上和text很相似了,但为什么还要有varchar, mediumtext, text这些类型?
(从存储上来讲大于255的varchar可以说是转换成了text.这也是为什么varchar大于65535了会转成mediumtext)

我理解:这块是一方面的兼容,另一方面在非空的默认值上varchar和text有区别。从整体上看功能上还是差别的。

这里还涉及到字段额外开销的:

  1.   - varchar 小于255byte 1byte overhead
  2.   - varchar 大于255byte 2byte overhead
  3.    
  4.   - tinytext 0-255 1 byte overhead
  5.   - text 0-65535 byte 2 byte overhead
  6.   - mediumtext 0-16M 3 byte overhead
  7.    
  8.   - longtext 0-4Gb 4byte overhead

备注 overhead是指需要几个字节用于记录该字段的实际长度。

从处理形态上来讲varchar 大于768字节后,实质上存储和text差别不是太大了。 基本认为是一样的。
另外从8000byte这个点说明一下: 对于varcahr, text如果行不超过8000byte(大约的数,innodb data page的一半) ,overflow不会存到别的page中。基于上面的特性可以总结为text只是一个mysql扩展出来的特殊语法有兼容的感觉。

默认值问题:

  1.   - 对于text字段,Mysql不允许有默认值。
  2.   - varchar允许有默认值

总结:

    1.   根据存储的实现: 可以考虑用varchar替代tinytext
    2.   如果需要非空的默认值,就必须使用varchar
    3.   如果存储的数据大于64K,就必须使用到mediumtext , longtext
    4.   varchar(255+)和text在存储机制是一样的
    5.    
    6.   需要特别注意varchar(255)不只是255byte ,实质上有可能占用的更多。
    7.    
    8.   特别注意,varchar大字段一样的会降低性能,所以在设计中还是一个原则大字段要拆出去,主表还是要尽量的瘦小

MySQL text和varchar区别

原文地址:https://www.cnblogs.com/lovezhr/p/14944523.html

您可能感兴趣的文档:

--结束END--

本文标题: MySQL text和varchar区别

本文链接: https://www.lsjlt.com/news/8532.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL text和varchar区别
    从存储上讲:   - text 是要要进overflow存储。 也是对于text字段,不会和行数据存在一起。但原则上不会全部overflow ,   会有768字节和原始的行存储在一块,多于768的行会存在和行相同的Page或...
    99+
    2016-02-16
    MySQL text和varchar区别 数据库入门 数据库基础教程 数据库 mysql
  • mysql中varchar和 text的区别
    深入理解MySQL中varchar和text的区别 1. 引言 在MySQL数据库中,varchar和text是常见的数据类型,用于存储文本数据。虽然它们都可以用于存储字符串,但它们在存储容量、性能影...
    99+
    2023-09-21
    mysql 数据库
  • mysql中varchar与text具体区别
    本文主要给大家简单讲讲mysql中varchar与text具体区别,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望mysql中varchar与text具体区别...
    99+
    2022-10-18
  • MySQL中char、varchar和text三者的区别是什么
    今天就跟大家聊聊有关MySQL中char、varchar和text三者的区别是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。具体说明:char:...
    99+
    2022-10-18
  • mysql char 和varchar的区别?
    char 和varchar的区别 char 一定会使用指定的空间,varchar是根据数据来定空间 2、 char的插入数据效率理论上比varchar高:varchar是需要通过后面的记录数来计算 ...
    99+
    2023-09-22
    mysql 数据库
  • SQL中char nchar varchar nvarchar text ntext的区别
         类型长度使用说明长度说明char(n)定长索引效率高,程序里面使用trim去除多余的空白n必须是一个介于1和8000之间的数值,存储大小为n个字节varch...
    99+
    2022-10-18
  • MYSQL中 char 和 varchar的区别
    CHAR和VARCHAR类型相似,差别主要在存储,尾随空格和检索方式上。 CHAR和VARCHAR相同的是:CHAR和VARCHAR都指定了字符长度,注意是字符长度。例如char(30) 和 varcha&...
    99+
    2022-05-22
    MySQL char MySQL varchar
  • char、varchar、nchar、nvarchar、text之间有什么区别
    这篇文章给大家分享的是有关char、varchar、nchar、nvarchar、text之间有什么区别的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。char、varchar、n...
    99+
    2022-10-18
  • mysql的varchar与text对比
    varchar和text是mysql字符存储争议比较多的领域,究竟大字段用那个比较好,我们来对比一下,然后自行选择.大小对比VARCHAR:varchar在mysql中必须满足最大行宽度限制,也就是 655...
    99+
    2022-10-18
  • Mysql中varchar和text的示例分析
    小编给大家分享一下Mysql中varchar和text的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Varchar 对...
    99+
    2022-10-19
  • MySQL中varchar和char类型的区别
    目录前述VARCHAR类型VARCHAR适用情况CHAR类型测试VARCHAR(5)与VARCHAR(200)的区别总结前述 VARCHAR和CHAR是两种最主要的字...
    99+
    2022-11-12
  • mysql中char和varchar的区别有哪些
    本篇内容主要讲解“mysql中char和varchar的区别有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql中char和varchar的区别有哪些...
    99+
    2022-10-19
  • mysql innodb引擎中varchar和char的区别
    一. 行记录格式 innodb在存储数据的时候是以行的形式存储的,版本相关,并且有固定的格式。可以通过下面的语句查询当前所用版本的行记录格式: show table status like ‘表名‘; 在版本5.6中默认使用格式是Com...
    99+
    2021-10-13
    mysql innodb引擎中varchar和char的区别 数据库入门 数据库基础教程 数据库 mysql
  • MYSQL中varchar和TEXT的相关问题详析
    目录起因问题分析:text和varchar根据阿里巴巴开发手册嵩山版 mysql 数据库篇ORM 映射mysql的官方文档TEXT数据类型附:MYSQL中varchar和TEXT差异点总结:起因 引发原因:门店需求新增自...
    99+
    2022-12-15
    mysql varchar text sql varchar
  • mysql中blob和text有哪些区别
    本文小编为大家详细介绍“mysql中blob和text有哪些区别”,内容详细,步骤清晰,细节处理妥当,希望这篇“mysql中blob和text有哪些区别”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,...
    99+
    2022-10-19
  • MySQL中varchar和char类型有什么区别
    本篇内容介绍了“MySQL中varchar和char类型有什么区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!VARCHAR类型VARCH...
    99+
    2023-06-25
  • varchar和char有什么区别
    varchar和char的区别:char是固定长度的字符类型,而Varchar是可变长度的字符类型。char能存放的字符个数是255,而 varchar 能存放65532个字符。char和varchar的最大长度限制是mysql规定的。ch...
    99+
    2022-10-20
  • MySQL字符串类型中VARCHAR和CHAR的区别
    前述VARCHAR和CHAR是两种最主要的字符串类型。不幸的是,很难精确地解释这些值是怎么存储在磁盘和内存中的,因为这跟存储引擎的具体实现有关。下面的描述假设使用的存储引擎是InnoDB和/或者MyISAM...
    99+
    2022-10-18
  • mysql中的char与varchar有什么区别
    这篇文章将为大家详细讲解有关mysql中char与varchar的区别,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。varchar类型用于存储可变长的字符串,是比较常见常...
    99+
    2022-10-18
  • Mysql中varchar与char的区别有哪些
    这篇文章给大家分享的是有关Mysql中varchar与char的区别有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。mysql中varchar与char的区别以及varcha...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作