在 SQL Server 2008 上获取元数据 - 非常慢

发布于 2024-10-03 03:36:09 字数 835 浏览 2 评论 0原文

今年早些时候,我们从 SQL Server 2005 迁移到 2008,升级后我们注意到,在 2008 年获取表和视图及其所有相应列的元数据大约需要 15 分钟,而在 2005 年则几乎是即时的。

简而言之,这是基本的 Java 代码,需要 15 分钟才能完成,并且使我们的服务器利用率接近 100%。架构变量是对内部对象的引用,该内部对象保存从此查询返回的信息。

Connection con = db.open();
DatabaseMetaData metaData = con.getMetaData();
String types[] = { "TABLE", "VIEW" };
ResultSet resultSet = metaData.getTables(null, null, "%", types);
while (resultSet.next())
{
   schema.addTable(tableName);

   ResultSet columnSet = metaData.getColumns(null, null, tableName, "%");
   while (columnSet.next())
      schema.addColumn(tableName, columnSet.getString(4));
   columnSet.close();
}
resultSet.close();

我们在 google 上搜索了这个问题,看来 2008 R2 版本应该解决一些模式加载性能问题。除了支付昂贵的升级费用之外,还有其他人对如何提高此查询的性能有什么好主意吗?

仅供参考 - 我们正在使用最新的 jTDS 驱动程序。我们还注意到使用 Microsoft 的 Java 驱动程序时也有类似的性能。

We moved from SQL Server 2005 to 2008 earlier this year, and after the upgrade we noticed that fetching the metadata for tables and views along with all of their respective columns takes about 15 minutes on 2008 compared to what used to be nearly instant on 2005.

In a nutshell, here is the basic java code that takes 15 minutes to complete and slams our server utilization at near 100%. The schema variable is a reference to an internal object that holds the information returned from this query.

Connection con = db.open();
DatabaseMetaData metaData = con.getMetaData();
String types[] = { "TABLE", "VIEW" };
ResultSet resultSet = metaData.getTables(null, null, "%", types);
while (resultSet.next())
{
   schema.addTable(tableName);

   ResultSet columnSet = metaData.getColumns(null, null, tableName, "%");
   while (columnSet.next())
      schema.addColumn(tableName, columnSet.getString(4));
   columnSet.close();
}
resultSet.close();

We've searched google pretty hard on this issue, it appears that the 2008 R2 release was supposed to resolve some schema loading performance issues. Short of paying for an expensive upgrade, does anybody else have any good ideas on how to improve the performance of this query?

FYI - we are using the latest jTDS driver. We've also noticed similar performance when using Microsoft's Java driver.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

空心↖ 2024-10-10 03:36:09

请参阅这篇文章并尝试将 SQL Server 2008 的数据库兼容性级别切换为 100。也许如果您将数据库从 2005 年移至 2008 年,性能损失就会来自那里。

See this post and try switching database compatibility level to 100 for SQL Server 2008. Maybe if you moved the database from 2005 to 2008 the performance hit is coming from there.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文