当前位置: 首页 > 面试题库 >

mysql中的varchar(100)声明使用多少实际存储空间?

丌官嘉福
2023-03-14
问题内容

如果我有一个表,该表的字段声明为接受varchar(100),然后实际上插入单词“
hello”,那么在mysql服务器上将使用多少实际存储空间?即使声明了varchar(100),插入NULL也会导致不使用任何存储吗?

答案是什么,在不同的数据库实现中是否一致?


问题答案:

如果我有一个表,该表的字段声明为接受varchar(100),然后我实际上插入单词“ hello”,那么在mysql服务器上将使用多少实际存储空间?

Mysql将存储5个字节,再加上1个字节作为长度。如果varchar大于255,则它将存储2个字节的长度。

请注意,这取决于列的字符集。如果字符集是utf8,则mysql每个字符最多需要3个字节。一些存储引擎(即内存)将始终要求字符集每个字符的最大字节长度。

即使声明了varchar(100),插入NULL也会导致不使用任何存储吗?

使列可为空意味着mysql将必须为每行最多8个可为空的列留出一个额外的字节。这称为“空掩码”。

答案是什么,在不同的数据库实现中是否一致?

甚至在mysql内的存储引擎之间也不一致!



 类似资料:
  • 问题内容: 我正在尝试对MySQL 5.0中的变量进行一些简单的操作,但是我无法完全正常工作。我已经看到了很多(非常!)DECLARE / SET的不同语法,我不确定为什么……在任何情况下,我都可能会混淆它们/选择错误的语法/混合它们。 这是一个失败的最小片段: 我也尝试过使用BEGIN … END包装它;并作为一个程序。在这种情况下,MySQL Workbench会帮助我:第一行显示“’)’附近

  • 用于声明Pod中容器使用的存储卷大小。 存储声明(PVC)用于声明pod中容器对存储卷的要求。创建存储声明时不会根据声明要求创建存储,当用户在创建deployment、Statefulset、Job、Cronjob时可以为容器的数据卷选择存储声明,云管平台才会在节点的本地存储上创建符合pvc的存储。 存储声明的详细介绍内容,请参考kubernets官方文档-PersistentVolumeClai

  • 问题内容: MySQL如何存储varchar字段?我可以假设以下模式代表合理的存储大小: 1,2,4,8,16,32,64,128,255(最大) 通过示例进行说明。可以说我有20个字符的varchar字段。MySQL在创建此字段时是否基本上保留32个字节的空间(不确定是否为字节),但只允许输入20个字节? 我想我担心优化大型表的磁盘空间。 问题答案: 为了回答这个问题,在磁盘上MySql使用1

  • 问题内容: 我要做出设计决定,正在寻找一些最佳实践建议。我有一个Java程序,需要在MySQL数据库中存储大量(每天数百个)浮点数组。数据是长度为300 的固定长度数组。我可以看到三个合理的选择: 将数据存储为BLOB。 序列化数据并将其存储为VARCHAR。 将数据作为二进制文件写入磁盘,并存储对它的引用。 我还应该提到,该数据将被读取并经常更新。 我想使用BLOB,因为这是我过去所做的,并且这

  • 问题内容: 我要做出设计决定,正在寻找一些最佳实践建议。我有一个Java程序,需要在MySQL数据库中存储大量(每天几百个)浮点数组。数据是长度为300 的固定长度数组。我可以看到三个合理的选择: 将数据存储为BLOB。 序列化数据并将其存储为VARCHAR。 将数据作为二进制文件写入磁盘,并存储对它的引用。 我还应该提到,该数据将被读取并经常更新。 我想使用BLOB,因为这是我过去所做的,并且这

  • 本文向大家介绍MySQL 声明变量及存储过程分析,包括了MySQL 声明变量及存储过程分析的使用技巧和注意事项,需要的朋友参考一下 声明变量 设置全局变量 set @a='一个新变量'; 在函数和储存过程中使用的变量declear declear a int unsigned default 1; 这种变量需要设置变量类型 而且只存在在 begin..end 这段之内 select .. into