Infobright/MySQL 统计工具





5.00/5 (1投票)
在 Java 中显示 Infobright/MySQL 数据库统计信息
引言
这个 Java 命令行界面 (CLI) 使用 JDBC 驱动程序连接到 Infobright 数据库并显示其统计信息(大小、压缩大小、压缩率等)。该代码可以很容易地修改为与 MySQL 数据库一起使用。这个项目的目标是提供简单、易于阅读的代码,向用户展示如何使用 Java、JDBC 驱动程序、Infobright 和 MySQL。
所需软件
- Java JRE(1.5 或更高版本)
- Java IDE(推荐 Eclipse)
- Infobright 或 MySQL 数据库
- MySQL 的 JDBC 驱动程序
运行可执行文件
源代码中包含一个可运行的 JAR 文件。 可以从终端运行如下:
java -jar ice_tools.jar [选项]
选项如下:
- -u 用户名
- -P 端口 (注意:这是大写字母“P”)
- -h 主机名
- -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 'Data Base Size in MB',TABLE_COMMENT FROM information_schema.TABLES GROUP BY table_schema;
这显示了当前安装的 DBMS 的版本:
show variables like 'version_comment';
历史
最新版本添加了查看整个数据库的总原始大小、总压缩大小和总压缩率的功能。
结论
此代码旨在用作构建数据库统计应用程序的起点。 鼓励您修改代码以满足您的特定需求。