`
dk101
  • 浏览: 66413 次
  • 性别: 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数据库方法—附图

    Derby数据库连接方法详解 Derby数据库连接方法是Java应用程序连接Derby数据库的主要方式。 Derby数据库是一种嵌入式关系数据库管理系统,可以嵌入到Java应用程序中,提供了一个轻量级、可靠的数据库解决方案。 ...

    derby.zip,Derby数据库

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

    derby 数据库 eclipse插件

    7. **导入/导出数据**:允许用户将数据从CSV或其他格式导入到Derby数据库,或者将数据导出到文件,便于数据迁移和备份。 8. **调试与日志**:插件可能提供调试选项,帮助定位和解决数据库相关问题。此外,可能还有...

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

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

    Derby数据库初级使用文档

    Derby数据库是一款轻量级的关系型数据库管理系统,由Apache软件基金会开发并维护。它是Java编写,完全符合Java Database Connectivity (JDBC) API的,因此非常适合嵌入式应用和小型项目。本文档将详细介绍Derby...

    内嵌数据库derby 10.6.2开发文档

    - **类加载机制**:深入探讨了Derby的类加载过程,以及如何处理动态更改的jar文件或数据库类路径。 #### 服务器端编程 - **数据库侧JDBC例程**:涵盖了如何在数据库内部编写和执行JDBC代码,包括异常处理和自定义...

    derby 数据库驱动jar包

    derby 数据库驱动jar包, 更多其他数据库驱动jar包(包括db2,derby,exasol,h2,jtds,mimer,mysql,nuodb,oracle,postgresql,redshift,sqlite,vertica)请看楼主其他资源贴

    JavaSE6.0的Derby嵌入式数据库

    1. **初始化数据库**:在程序启动时,检查是否已经存在数据库文件。如果不存在,则创建一个新的数据库,并建立相应的表结构。 2. **数据库操作**:编写用于增删改查的SQL语句,并通过JDBC API执行这些操作。 3. **...

    derby数据库的简单操作

    ### Derby数据库的简单操作 #### 一、启动Derby服务器 在进行任何Derby数据库的操作之前,首先需要启动Derby服务器。Derby提供了一个网络服务器模式,可以通过执行`bin/startNetworkServer.bat`来启动该服务。 ...

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

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

    derby 数据库开发文档

    ### Apache Derby 数据库开发文档概览 #### 一、Apache Derby 概述 Apache Derby 是一款高质量、纯 Java 的嵌入式关系型数据库引擎。它最初由 IBM 开发并捐赠给开源社区。Derby 数据库的特点在于其轻量级、易于...

    derby10.10.1.1数据库

    这个"db_derby10.10.1.1-bin.zip"压缩包是专门为Windows操作系统设计的,包含了Derby数据库的二进制文件和必要的库,使得用户可以在Windows环境下快速安装和运行Derby数据库。解压该压缩包后,你会找到"db-derby-...

    derby embedded模式设置用户名和密码

    通过配置 derby.properties 文件,可以实现对 Derby 嵌入式数据库的用户验证。具体步骤如下: 1. 在数据库所在目录下创建一个名为 derby.properties 的文件。 2. 在文件中添加以下内容: derby.connection....

    derby 数据库 使用的例子

    这个压缩包文件"DERBY_PJ"可能包含了关于如何使用Derby数据库的实例和教程。 首先,让我们了解Derby的基本概念: 1. **安装与配置**:Derby数据库可以作为Java类库嵌入到Java应用中,无需独立服务器。只需将derby....

    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数据库转sql、db2等其他数据库的简易工具

    Derby数据库是一款轻量级的关系型数据库管理系统,它属于Apache软件基金会,被广泛应用于嵌入式系统和小型项目。在某些情况下,用户可能需要将Derby数据库的数据转换为SQL格式,或者是迁移到如DB2这样的其他数据库...

Global site tag (gtag.js) - Google Analytics