blob、clob字段小结(三)

Oracle是强大但在方便易用性上实在不敢恭维,自己搞了套LookAndFeel的Swing控制台奇丑无比且不好用(我在这并非抨击Swing,只是遗憾Oracle没有用好Swing,我可是Swing的坚定拥护者,过一阵我会专门开个Swing专栏),我真搞不懂Oracle的JDBC驱动就不能再封装一层,底层透明的自动插入empty_blob()/empty_clob(),不过如果你是用mysql,那么恭喜你mysql的大字段操作是很舒服的,不需要做任何而外的处理,且不要求启事务。

CREATE TABLE `emhookup` (
`picid` int(10) unsigned NOT NULL auto_increment,
`picname` varchar(50) NOT NULL default '0',
`picmodifyid` int(10) unsigned NOT NULL default '0',
`picturedata` longblob NOT NULL,
`pictype` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`picid`),
UNIQUE KEY `picid` (`picid`,`picname`),
KEY `picid_2` (`picid`)
) TYPE=MyISAM;

sql.append(" insert into emhookup ");
sql.append(" (picmodifyid, picname, picturedata, pictype)values(?,?,?,?) ");
ps = con.prepareStatement(sql.toString());
ps.setInt(1, picmodifyid);
ps.setString(2, picName);
ps.setObject(3, DataProcess.toByteByGZIP(data));
ps.setInt(4, data.picType);
ps.executeUpdate();
ps.close();

不过使用Mysql存储大对象有个问题必须注意:【max_allowed_packet】属性必须设置为可能的最大数,否则如果一个字段的数据大于max_allowed_packet的话将无法进行保存和获取。

在linux下拷贝配置文件 cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
将my.cnf中的max_allowed_packet该成需要的大小即可

记得在《blob、clob字段小结(一)》中我提到存储速度问题,是这样的:刚开始我用一张表存储一张图纸,用一条记录存储一个图元,结果在存储几万个图元的大图纸是出现了无法忍受的速度问题,每张图纸打开需要二十秒以上,进行了JDBC的各种参数优化都无济于事,后来我改成一张图纸就存一条记录,也就是说所有图纸上的说有内容都在一个blob字段中,结果打开一张几万个图元的图纸都不会超过三秒的时间。打个比喻:背着书包上学快,还是一本一本的来回那书快啊,虽然书是一样多的,虽然一本书比一包书轻,但是...

大字段还有很多用途的,让我们在现实中慢慢挖掘它的潜力吧
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值