1、一般在保存少量字符串的时候,我们会选择CHAR 或者VARCHAR;而在保存较大文本时,通常会选择使用TEXT 或者BLOB,二者之间的主要差别是BLOB 能用来保存二进制数据,比如照片;而TEXT 只能保存字符数据,比如一篇文章或者日记。TEXT 和BLOB 中有分别包括TEXT、MEDIUMTEXT、LONGTEXT 和BLOB、MEDIUMBLOB、LONGBLOB3 种不同的类型,它们之间的主要区别是存储文本长度不同和存储字节不同,用户应该根据实际情况选择能够满足需求的最小存储类型。本节主要对BLOB 和TEXT 存在的一些常见问题进行介绍。

2 、BLOB 和TEXT 值会引起一些性能问题,特别是在执行了大量的删除操作时。删除操作会在数据表中留下很大的“空洞”,以后填入这些“空洞”的记录在插入的性能上会有影响。为了提高性能,建议定期使用OPTIMIZE TABLE 功能对这类表进行碎片整理,避免因为“空洞”导致性能问题。

OPTIMIZE TABLE 的碎片整理功能。

(1)创建测试表t,字段id 和context 的类型分别为varchar(100)和text:

mysql> create table t (id varchar(100),context text);

(2)往t 中插入大量记录,这里使用repeat 函数插入大字符串:

mysql> insert into t values(1,repeat('haha',100));

mysql> insert into t values(2,repeat('haha',100));

mysql> insert into t values(3,repeat('haha',100));

mysql> insert into t select * from t;

mysql> insert into t select * from t;

Query OK, 196608 rows affected (4.86 sec)

Records: 196608 Duplicates: 0 Warnings: 0

(3)退出到操作系统下,查看表t 的物理文件大小:

[linux@yxm test]$ du -sh t.*

125

16K t.frm

155M t.MYD

8.0K t.MYI

这里数据文件显示为155MB。

(4)从表t 中删除id 为“1”的数据,这些数据占总数据量的1/3:

[linux@yxm test]$ mysql -u root -p1234

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 24 to server version: 5.0.45-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use test

Database changed

mysql> delete from t where id=1;

Query OK, 131072 rows affected (4.33 sec)

mysql> exit

Bye

(5)再次退出到操作系统下,查看表t 的物理文件大小:

[linux@yxm test]$ du -sh t.*

16K t.frm

155M t.MYD

8.0K t.MYI

可以发现,表t 的数据文件仍然为155MB,并没有因为数据删除而减少。

(6)接下来对表进行OPTIMIZE(优化)操作:

mysql> use test;

mysql> OPTIMIZE TABLE t;

+--------+----------+----------+----------+

| Table  | Op        | Msg_type | Msg_text |

+--------+----------+----------+----------+

| test.t | optimize | status       | OK |

+--------+----------+----------+----------+

1 row in set (2.88 sec)

(7)再次查看表t 的物理文件大小:

[linux@yxm test]$ du -sh t.*

16K t.frm

104M t.MYD

8.0K t.MYI

可以发现,表的数据文件大大缩小,“空洞”空间已经被回收。

mysql vchar 磁盘碎片_mysql TEXT与BLOB 碎片整理相关推荐

  1. 清除mysql数据碎片_MySQL 清除表空间碎片方法总结

    mysql数据库会生成空间碎片了,这些空间碎片对于我们来讲影响不大但如果空间碎片多了会导致mysql查询缓存了,下面一起来看MySQL 清除表空间碎片方法吧,具体的如下所示. 碎片产生的原因 (1)表 ...

  2. mysql vchar 最大长度_mysql VARCHAR的最大长度到底是多少

    以前一直都认为有两个字节来记录长度(长度小也可以用一个字节记录),所以这个问题当时觉得就挺无聊的 不过后来群里有人给了解释,突然才发现原来事情不是这么简单 MYSQL COMPACT格式,每条记录有一 ...

  3. mysql自定义收藏分类_MYSQL中SHOW的使用整理收藏

    a. show tables或show tables from database_name; //显示当前数据库中所有表的名称 b. show databases; //显示mysql中所有数据库的名 ...

  4. mysql数据库blob区别_MySQL中TEXT与BLOB字段类型的区别

    在MySQL中有两个字段类型容易让人感觉混淆,那就是TEXT与BLOB,特别是自己写博客程序的博主不知道改为自己的博客正文字段选择TEXT还是BLOB类型. 下面给出几点区别: 一.主要差别 TEXT ...

  5. mysql blob 比较_MySQL下,text 、blob的比较

    MySQL存在text和blob: (1)相同 在TEXT或BLOB列的存储或检索过程中,不存在大小写转换,当未运行在严格模式时,如果你为BLOB或TEXT列分配一个超过该列类型的最大长度的值值,值被 ...

  6. mysql blob 字段_MySQL中TEXT与BLOB字段类型的区别

    在MySQL中有两个字段类型容易让人感觉混淆,那就是TEXT与BLOB,特别是自己写博客程序的博主不知道改为自己的博客正文字段选择TEXT还是BLOB类型. 下面给出几点区别: 一.主要差别 TEXT ...

  7. mysql 整理磁盘空间_mysql 数据库磁盘满了,进行碎片化整理的相关问题

    一.进行碎片化整理的步骤: 1,进行磁盘碎片化整理.原因是datafree占据的空间太多啦.具体可以通过这个sql查看. SELECT CONCAT(TRUNCATE(SUM(data_length) ...

  8. mysql储存大文本_mysql 的大文本存储TEXT BLOB

    TEXT & BLOB 一般在保存少量字符串的时候,我们会选择 CHAR 或者 VARCHAR:而在保存较大文本时, 通常会选择使用 TEXT 或者 BLOB,二者之间的主要差别是 BLOB ...

  9. 数据库mysql爆满怎么搞_MySQL 磁盘满了,怎么办??

    问题 使用命令发现磁盘使用率为100%了,还剩几十兆. 一系列神操作: 备份数据库,删除实例.删除数据库表.重启mysql服务.结果磁盘空间均为释放 怎么办 网上查了很多资源,说要进行磁盘碎片化整理. ...

最新文章

  1. 参加java培训都有哪些学习阶段
  2. 使用多尺度空间注意力的语义分割方法
  3. 利用PCA进行数据降维
  4. 关于《指针的艺术》看书时所遇到的问题
  5. c#的DateTime.Now函数详解
  6. java项目实现流水号自动增长
  7. 信息安全已成社会普遍焦虑 给个人信息加上防护锁
  8. mysql循环insert多条数据
  9. 学习Spring Boot:(二十四)多数据源配置与使用
  10. memcached常用命令
  11. 【英语学习】【WOTD】animadversion 释义/词源/示例
  12. factorymenu什么意思_宏基20lsquo;显示屏AUTO和MENU是什么意思,在什么位置_已解决 - 阿里巴巴生意经...
  13. Codeforces 797B - Odd sum
  14. iscsi多路径配置方式
  15. python处理excel表格-Python读写Excel表格(简单实用)
  16. linux 7.4ip配置,新手进阶 Ubuntu7.10中配置IP地址
  17. linux xv命令什么意思,Linux部分命令解释(命令缩写代表什么意思)
  18. 下拉列表支持拼音简拼、全拼、汉字搜索。
  19. Cocos Creator 微信创意小游戏《甜蜜糖果屋》团队专访:让纸片人活起来
  20. 陶瓷充电电池行业研究及十四五规划分析报告

热门文章

  1. 地方政府留言板文本数据
  2. #程序员的办公桌面是怎么样的?网友晒的真是逼格满满啊
  3. Windows7UltimateSP1x64安装及一些设置
  4. wps怎么免费导出简历_个人简历免费模板手机编辑,手机wps怎么免费导出简历
  5. cannot use message (variable of type protoreflect.ProtoMessage) as type protoiface.MessageV1 in argu
  6. 微信小程序如何隐藏左上角返回首页按钮?
  7. tp6字符串解析为HTML,6.字符串 · ThinkPHP5从入门到努力之入门实践 · 看云
  8. 手机5g什么时候普及_5G 网络什么时候普及,现在购买 4G 手机划算吗?
  9. 华南理工大学珠海学院计算机,慕了!盘点那些有“私家游泳池”的广东高校!考上就算捡到啦!...
  10. Apollo学习笔记(19)UKF