用了十多年的数据库,工作需要也经常要帮忙数据库性能调优。这里简单列一些我平时工作时用数据库的体会和心得:

介绍:

虽然数据库原生支持Blob(二进制大对象)和Clob(字符串大对象),但是从性能的考虑,我们把这些内容放在数据库里面不合适的。比如说我有1个100多M的图片(Blob),或者说我有一大段文本(Clob),这种东西是千万杜绝放在数据库中的。原因有3点。(1)加大了数据库维护和备份的成本。因为这些大数据的存在,使得我们要很多额外空间来进行数据库备份。(2)是因为数据库是一种读快写慢的系统,这就意味着如果我们要变更这些内容,会非常的不方便。比如我们要在大段文本中加或者改写内容,我们必须把这段Clob删除后再重新添加。非常费时间。(3)在现在的新系统架构中我们一般都用了分层的思想,比如说,数据库层,应用层,文件存储层,浏览器等。而在考虑到系统整体的性能的时候,往往跨越层级的访问是最大因素。而我们如果吧这些图片,大段文本都放在数据库的话,那么最简单的访问都必须要横跨多层。

解决方法:

一般我们为了处理这种Blob,Clob的数据,我们常用的解决方法是,我们可以建立一个文件服务器,然后把相应的图片,或者文本(放在某文件中),然后把这些图片和文本放在文件服务器上,而在数据库中保存的是这些图片资源或者文本资源的路径。这样的好处有3点。(1)读写速度提升。因为 文件服务器上的内容是扁平内容,而数据库系统中的内容是结构化的数据,所以从读写效率上来说,对于文件服务器内容的读写速度要远远高于对于数据库系统的读写速度.(2)可维护性提升。如果我们把这些图片,文本放在文件服务器上,那么我们非常容易维护。因为我们如果要替换图片,或者替换文本,我们只要把新的文件取代原来位置的图片和文本就可以了,而数据库中因为保存的是引用的图片或者文本的位置,所以我们根本不需要去改那个路径。这也是一种弱耦合关系。而前面也说了,如果这些内容以LOB的形式放在数据库中的话,就算要做非常微量的改动,也必须删除原来对象然后创建新对象,这个是非常浪费时间的。(3)无需海量的备份开销。因为数据库备份很麻烦,不仅仅要备份内容,还要备份索引等。而文件系统的备份则无疑是最简单的硬盘内容的复制,所以开销很小。

转载于:https://blog.51cto.com/supercharles888/1163402

合理使用Blob/Clob相关推荐

  1. Spring JDBC-使用Spring JDBC获取本地连接对象以及操作BLOB/CLOB类型数据

    概述 如何获取本地数据连接 示例从DBCP数据源中获取Oracle的本地连接对象 相关接口操作 LobCreator LobHandler 插入LOB类型的数据 以块数据的方式读取LOB数据 以流数据 ...

  2. oracle clob 写入mongo,【Oracle】Varchar2/Blob/Clob用法详解

    数据库中提供了三种字段类型Varchar2.Blob和Clob用于存储字符串或二进制数据,其中Varchar2.Clob用于存储字符串数据,而Blob用于存储二进制数据. Varchar2采用单字节存 ...

  3. Struts+Spring+Hibernate处理Lob(Blob,Clob)--sessionFactory中注入 org.springframework.jdbc.support.lob.Def

    [转载]org.springframework.jdbc.support.lob. 转载▼ 标签: 转载 分类: spring 原文地址:org.springframework.jdbc.suppor ...

  4. java 读取oracle的blob/clob

    http://www.iteye.com/topic/100066 ----------厚厚发表于 2006年06月27日 网络上很多关于JAVA对Oracle中BLOB.CLOB类型字段的操作说明, ...

  5. Spring Boot + Oracle 处理Blob/Clob类型字段实例

    本篇演示使用SpringBoot (JPA)如何保存和查询Oracle 数据库中的Clob/Blob 类型的字段. Clob/Blob 大对象数据 Clob/Blob 类型的字段用于保存大型的数据, ...

  6. blob clob区别

    原文地址:http://blog.163.com/chengwei_1104/blog/static/536452742008112292122537/ 1.BLOB      BLOB全称为二进制大 ...

  7. Oracle 中LONG RAW BLOB CLOB类型介绍

    说明: RAW: 未加工类型,可存储二进制数据或字节符 LONG: 可变长的字符串数据,最长2G,LONG具有VARCHAR2列的特性,可以存储长文本一个表中最多一个LONG列[不建议使用] LONG ...

  8. Oracle与MySQL数据库大型对象类型(TinyBlob Blob Mediumblob LongBlob / BLOB CLOB NCLOB BFILE )的区别

    MySQL数据库中BLOB类型分为以下四种 TINYBLOB可变长二进制数据,最多255个字节 BLOB可变长二进制数据,最多2的16次方-1个字节 即64K MEDIUMBLOB可变长二进制数据,最 ...

  9. oracle对大对象类型操作:blob,clob,nclob,bfile

    在oracle中,有4个大对象(lobs)类型可用,分别是blob,clob,bfile,nclob.下面是对lob数据类型的简单介绍.blob:二进制lob,为二进制数据,最长可达4GB,存贮在数据 ...

  10. Blob和Clob的区别和用法

    BLOB和CLOB都是大字段类型, 1.BLOB是按二进制来存储的,通常像图片.文件.音乐等信息就用BLOB字段来存储,先将文件转为二进制再存储进去. 2.CLOB是可以直接存储文字的,像文章或者是较 ...

最新文章

  1. 面试官:连YOLO都搞不定,是自己走还是我送你
  2. 教你如何塑造JavaScript牛逼形象
  3. beast php,windows php-beast 安装
  4. eclipse出现String错误,问题已解决
  5. Activiti6--入门学习--基础知识环境搭建部署
  6. php位运算符与逻辑运算_php 或_php 逻辑运算符和
  7. c语言中常用函数名,C语言中一些常用函数的说明
  8. Ferret 经度范围划定时的方向问题
  9. 另外一台电脑打开html,有的网页你打不开,在别的电脑就能打开,这样处理就解决了...
  10. Stratified k-foldTimeSeriesSplit
  11. 选取域名需要注意的几个方面
  12. 串口打开失败!请检查指定串口是否存在或者已被打开
  13. 如何使用python将中文标点转为英文标点?
  14. graphpad prism8教程柱状图_一起来看看Graphpad Prism 8.0进阶篇吧!
  15. 如何将文字翻译成英文?简单教程讲解
  16. android屏幕省电,AMOLED屏幕省电吗 AMOLED屏幕耗电测评测
  17. 【Linux随笔随记】三、sheel语法-数组
  18. c 语言爱心告白代码,c语言心形告白代码实现
  19. 全志A10s芯片用户手册
  20. php怎么加css和背景图,如何使用css中:after伪元素实现背景图片的叠加层?

热门文章

  1. linux 负载进程,Linux 中 D 状态的进程与平均负载
  2. elementui表格列宽自适应_Java 操作Word表格——创建嵌套表格、添加复制表格行或列...
  3. python按键退出循环_python – 按退出键退出循环
  4. 对,信中介不去信一头猪
  5. Educational Codeforces Round 45 (Rated for Div. 2) G - GCD Counting
  6. SELECT中的多表连接
  7. js数组(列表)的基本操作
  8. 深入理解Yii2.0(yii学习的经典博客)
  9. HDU 2955 Robberies抢劫案(01背包,变形)
  10. Windows server 2019 - Raid5 搭建+测试