通过Internet查询具有大量数据的SQL数据库时可能会出现什么问题

时间:2011-08-26 10:12:03

标签: sql sql-server solr dataimporthandler

我在一个MSSQL服务器上拥有这个大数据库,其中包含由网络爬虫索引的数据。 我每天都想使用位于另一个服务器和另一个网络中的DataImportHandler来更新SOLR SearchEngine索引。

Solr DataImportHandler使用查询从SQL获取数据。例如此查询

SELECT * FROM DB.Table WHERE DateModified > Config.LastUpdateDate

ImportHandler会选择8种此类型。每个选择都将从数据库获得1000行。

要连接到SQL SERVER我正在使用 com.microsoft.sqlserver.jdbc.SQLServerDriver

我可以为连接添加的参数是:

  • responseBuffering =“adaptive / all”
  • BATCHSIZE = “整数”

所以我的问题是:

每天进行此查询时可能出现什么问题?(网络错误除外) 我想知道SQL Server在这种情况下是如何工作的?

此外,我必须对我实现此导入的方式以及如何处理错误做出决定,但首先我需要知道可能出现的错误。

谢谢!

稍后修改

我的问题是我不知道这个SQL查询怎么会失败。当我每天呼叫这个导入器时,它会对数据库进行10次查询。如果第5次查询失败,我必须选择: 回滚整个事务并再次执行,或者提交我从前4个查询中获得的数据,并以某种方式重做查询5到10.但如果这些查询总是失败,由于其他一些问题,我需要考虑另一种导入方式这个数据。

由于超时操作或类似的事情,这个基于互联网的SQL查询是否会失败?

2 个答案:

答案 0 :(得分:0)

使用此类导入后我发现的唯一问题是:

  • 网络问题 - 如果网络连接失败:在这种情况下,SOLR会回滚所有更改,并且不会进行提交。在我的程序中,我将其识别为错误,并且不记录数据库中的更改。

感谢@GuidEmpty提供了他的comment并为我澄清了这一点。

答案 1 :(得分:-1)

权限可能存在问题(不确定是否可以控制这些权限)。

抓住你能想到的异常并包含一个全部捕获(Exception exp)可能是一个好主意。

然后将整体作为最坏情况并回滚(您可以在哪里)并记录异常以便稍后包含。

您没有说明您选择的是哪种类型,请记住text / blob会占用更多空间,如果您缓冲任何数据等,可能会导致内部问题。

虽然只是快速重新阅读,但如果您只是选择,则无需回滚。

我认为你最好考虑一下你希望实现的目标,以及了解所有可能的问题是否会有所帮助?

HTH