数据库统计工具使用指南

本文旨在指导用户如何使用Java编写一个数据库统计工具,该工具可以展示数据库的大小、压缩大小、压缩比等统计信息。代码易于修改,适用于Infobright和MySQL数据库。目标是提供简单、易读的代码,展示如何使用Java、JDBC驱动程序、Infobright和MySQL

所需软件

要运行此项目,需要以下软件:

  • JavaJRE (1.5或更高版本)
  • JavaIDE(推荐使用Eclipse)
  • Infobright或MySQL数据库
  • MySQL的JDBC驱动程序

运行可执行文件

源代码中包含了一个可运行的JAR文件。可以通过以下命令从终端运行它:

java -jar ice_tools.jar [OPTIONS]

其中,OPTIONS选项如下:

  • -u username
  • -P port(注意:这是一个大写的'P')
  • -h hostname
  • -p(注意:这个标志不接受任何参数。如果使用,程序将提示输入密码。)

例如:

java -jar ice_tools.jar -u admin -P 3306 -h 192.168.1.10 -p

注意:如果未指定选项,则将使用默认值。

  • 用户名:'root'
  • 密码:留空
  • 端口:'5029'
  • 主机:'localhost'

编辑源代码

使用选择的IDE创建一个新项目,并导入提供的文件。为了使代码成功运行,必须下载MySQL的JDBC驱动程序,并添加对包含的JAR文件的引用。在Eclipse中,可以按照以下步骤配置构建路径并添加外部JAR:

接下来,让看看一些代码。

UserInterface类是命令行界面的主类。代码本身并不复杂,它请求用户输入,遍历数据结构,并打印出格式化的文本。

MySqlConnection类也相当直接。它包含所有连接信息以及用于连接和断开数据库的函数。

当程序首次运行时,会构建一个统计数据结构。想花点时间描述这个结构。它有三层:总体统计、数据库统计和表统计(可以添加第四层列统计)。总体统计存储在Statistic类中。它有压缩大小、原始大小、压缩比和一个映射数据库名称到DatabaseStatistic对象的哈希映射。DatabaseStatistic类保存特定数据库的统计信息:压缩大小、原始大小、压缩比和一个映射表名到TableStatistic对象的哈希映射。TableStatistic类保存特定表的统计信息:压缩大小、原始大小和压缩比。注意,这些类非常相似,可能可以减少为一个类。之所以将它们分开,是为了更好地可视化数据。

Statistic类包含最有趣的代码。这个类中的函数用于构建数据结构。下面列出的函数用于收集特定数据库的表统计信息。它返回结果的哈希映射。注意,runQuery是一个辅助函数。

private Map<String, TableStatistic> getTables( String databaseName) throws SQLException { ResultSet results = runQuery( "USE " + databaseName); String query = "SHOW TABLE STATUS WHERE ENGINE='BRIGHTHOUSE'"; Map<String, TableStatistic> tables = new HashMap<String, TableStatistic>(); results = runQuery(query); while (results.next()) { double compressedSize = Double.parseDouble(results.getString( "Data_length")) / 1048576.0; double compression = Double.parseDouble(results.getString( "Comment").split(": ")[1].split(",")[0]); double rawSize = compressedSize * compression; tables.put(results.getString("Name"), new TableStatistic(rawSize, compressedSize, compression)); } results.close(); return tables; }

注意:上面的查询是针对Infobright数据库的。如果想获取InnoDB或MyISAM数据库的统计信息,请从查询中删除“where Engine='BRIGHTHOUSE'”。同时请注意,压缩比不会存储在“Comment”字段中。这是Infobright特有的。

有用的查询

在处理这个项目时,遇到了一些问题。这里是发现的一些有用的MySQL查询。

这个列出了每个数据库的大小(以MB为单位):

SELECT table_schema, SUM(data_length + index_length) / 1024 / 1024 AS 'Data Base Size in MB', TABLE_COMMENT FROM information_schema.TABLES GROUP BY table_schema;

这个显示了当前安装的DBMS的版本:

SHOW VARIABLES LIKE 'version_comment';
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485