`
dk101
  • 浏览: 65368 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

帮Derby数据库物理文件瘦身。

 
阅读更多
        最近,项目快收尾了,需要清理数据库(Derby):清理不使用的数据,减小数据库大小。

        做完清理,发现数据库的物理文件大小并没有减小。不知道Derby提供什么样的机制,对物理文件进行瘦身?本人英文水平不到入门级,不想看官方英文文档,直接google一下,找到这个链接:http://mxh85154.blog.hexun.com/33808923_d.html,原来Derby提供存储过程来瘦身。

        文章中介绍得也不是很详细,只好自己去看Derby的文档,从文档中看出如下的文字:
SYSCS_UTIL.SYSCS_COMPRESS_TABLE
Use the SYSCS_UTIL.SYSCS_COMPRESS_TABLE system procedure to reclaim unused, allocated space in a table and its indexes. Typically, unused allocated space exists when a large amount of data is deleted from a table, or indexes are updated. By default, Derby does not return unused space to the operating system. For example, once a page has been allocated to a table or index, it is not automatically returned to the operating system until the table or index is destroyed. SYSCS_UTIL.SYSCS_COMPRESS_TABLE allows you to return unused space to the operating system.
Syntax
SYSCS_UTIL.SYSCS_COMPRESS_TABLE (IN SCHEMANAME VARCHAR(128),
IN TABLENAME VARCHAR(128), IN SEQUENTIAL SMALLINT)
SCHEMANAME
An input argument of type VARCHAR(128) that specifies the schema of the table. Passing a null will result in an error.
TABLENAME
An input argument of type VARCHAR(128) that specifies the table name of the table. The string must exactly match the case of the table name, and the argument of "Fred" will be passed to SQL as the delimited identifier 'Fred'. Passing a null will result in an error.
SEQUENTIAL
A non-zero input argument of type SMALLINT will force the operation to run in sequential mode, while an argument of 0 will force the operation not to run in sequential mode. Passing a null will result in an error.
SQL example
To compress a table called CUSTOMER in a schema called US, using the SEQUENTIAL option:
call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('US', 'CUSTOMER', 1)

        从文档中可以看出,调用此过程,需要传入3个参数:第一个为数据库的SCHEME,第二个为表名,第三个为一个非零的短整数,而且三个参数都不能为空。按照文档中的介绍,进行尝试,果然奏效,文件大小由850M缩小到40M。不过比较麻烦,需要对每一个表执行一次存储过程。后来,想到可以使用存储过程,一次性将所有表进行清理:在存储过程中,通过语句“SELECT * FROM SYS.SYSTABLES T WHERE T.TABLETYPE = 'T';”查询出所有的用户表,然后进行清理。

        最后有一个疑问,存储过程中,第三个参数的解释不是很清楚:传入不同的短整数,执行结果会有什么不同?
0
1
分享到:
评论
3 楼 macrotea 2011-09-25  
dk101 写道
macrotea 写道
为什么能瘦身?
文件大小由850M缩小到40M?那么恐怖?
是不是把你的表数据压缩了?


瘦身的原理还没去做了解,用得比较浅。
执行存储过程后,seg0目录下的dat文件被缩小,所以起到了压缩的效果。
其实数据库中的数据量很小,应该不到10M,只是Derby在使用一段时间后,其物理文件会变得很大。具体什么原因,现在还没去了解过。

哦,原来这样,感谢指导
不过内嵌数据库我使用的是h2 你可以去了解下,也好用
2 楼 dk101 2011-09-25  
macrotea 写道
为什么能瘦身?
文件大小由850M缩小到40M?那么恐怖?
是不是把你的表数据压缩了?


瘦身的原理还没去做了解,用得比较浅。
执行存储过程后,seg0目录下的dat文件被缩小,所以起到了压缩的效果。
其实数据库中的数据量很小,应该不到10M,只是Derby在使用一段时间后,其物理文件会变得很大。具体什么原因,现在还没去了解过。
1 楼 macrotea 2011-09-25  
为什么能瘦身?
文件大小由850M缩小到40M?那么恐怖?
是不是把你的表数据压缩了?

相关推荐

    derby.zip,Derby数据库

    Derby数据库完整压缩包,解压缩即可使用,bat文件在bin文件目录下,驱动程序在lib目录下。 Apache Derby非常小巧,核心部分derby.jar只有2M,所以既可以做为单独的数据库服务器使用,也可以内嵌在应用程序中使用。...

    derby数据库以及在MyEclipse中的配置

    上网页也可以找到一些资源关于derby数据库的安装配置,但是你看起来会很麻烦,而且比较难以上手。 这是我自己动手实践过的,里面有很多截图方便你理解安装过程,已经电脑上面环境变量的配置,在MyEclipse上面的...

    derby 数据库 eclipse插件

    derby 数据库 eclipse插件 derby 数据库 eclipse插件

    连接derby数据库方法—附图

    连接derby数据库方法—附图

    derby嵌入式数据库连接问题

    derby嵌入式数据库连接问题

    Derby数据库初级使用文档

    Derby数据库初级使用文档,包括Derby数据库的安装、部署、使用等详细步骤,适合刚接触Derby人员使用。

    derby数据库的简单操作

    文档中简单列出了对derby数据库的几个简单的操作,包括连接derby、创建数据库、连接数据库、查询数据库等

    derby数据库免安装jvm内置数据库

    Apache Derby是一个完全用java编写的数据库,Derby是一个Open source的产品,基于Apache License 2.0分发。 Apache Derby非常小巧,核心部分derby.jar只有2M,所以既可以做为单独的数据库服务器使用,也可以内嵌在...

    derby 数据库 使用的例子

    derby 数据库 使用的例子 derby 数据库 使用的例子

    derby数据库

    详细描述了derby的使用,Derby数据库是一个纯用Java实现的内存数据库,属于Apache的一个开源项目。由于是用Java实现的,所以可以在任何平台上运行;另外一个特点是体积小,免安装,只需要几个小jar包就可以运行了。

    Derby数据库(V10.9)用户手册(PDF版)

    01. Getting Started with Derby - 10.9.pdf 02. Derby Reference Manual - 10.9.pdf 03. Derby Developer's Guide - 10.9.pdf 04. Tuning Derby - 10.9.pdf 05. Derby Server and Administration Guide - 10.9.pdf ...

    内嵌数据库derby 10.6.2开发文档

    内嵌数据库derby 10.6.2开发文档

    Derby数据库(V10.7)用户手册(PDF版)

    01. Getting Started with Derby - 10.7.pdf 02. Derby Reference Manual - 10.7.pdf 03. Derby Developer's Guide - 10.7.pdf 04. Tuning Derby - 10.7.pdf 05. Derby Server and Administration Guide - 10.7.pdf ...

    Derby数据库(V10.1)用户手册(PDF版)

    01. Getting Started with Derby - 10.1.pdf 02. Derby Reference Manual - 10.1.pdf 03. Derby Developer's Guide - 10.1.pdf 04. Tuning Derby - 10.1.pdf 05. Derby Server and Administration Guide - 10.1.pdf ...

    Derby中的备份、恢复和前滚恢复

    Derby中的备份、恢复和前滚恢复 在线备份 1 离线备份 2 使用备份进行恢复 3 转移或克隆数据库 3 前滚恢复 4 使用前滚恢复方式恢复数据库 5 禁用事务日志归档模式 5 检查事务日志归档模式是否启用 6 备份调度器 7 ...

    Derby数据库(V10.5)用户手册(PDF版)

    01. Getting Started with Derby - 10.5.pdf 02. Derby Reference Manual - 10.5.pdf 03. Derby Developer's Guide - 10.5.pdf 04. Tuning Derby - 10.5.pdf 05. Derby Server and Administration Guide - 10.5.pdf ...

    derby数据库驱动包

    derby数据库驱动包,java编程需要的包

    Derby数据库支持的数据类型

    Derby数据库支持的数据类型,介绍与JDBC规范兼容的Derby数据库支持的数据类型

    商品出入库例子+derby数据库

    简单的商品出入库操作的例子,还有打印的小功能,应用了derby数据库,这样可以将数据库也打包成一个exe文件,可以不用客户端安装数据库了。

    derby 数据库开发文档

    Apache Derby 是一种高质量的、纯 Java™ 的嵌入式关系数据库引擎,IBM® 最近已将其捐献给开放源码社区。Derby 数据库基于文件系统,具有高度的可移植性,并且是轻量级的,这使得它非常便于发布。

Global site tag (gtag.js) - Google Analytics