通过internet查询具有大量数据的SQL数据库时可能会出现什么问题
我在一个MSSQL服务器上有一个大型数据库,其中包含由网络爬虫索引的数据。 每天我都想使用位于另一台服务器和另一个网络中的DataImportHandler更新SOLR SearchEngine索引 Solr DataImportHandler使用查询从SQL获取数据。例如,这个查询通过internet查询具有大量数据的SQL数据库时可能会出现什么问题,sql,sql-server,solr,dataimporthandler,Sql,Sql Server,Solr,Dataimporthandler,我在一个MSSQL服务器上有一个大型数据库,其中包含由网络爬虫索引的数据。 每天我都想使用位于另一台服务器和另一个网络中的DataImportHandler更新SOLR SearchEngine索引 Solr DataImportHandler使用查询从SQL获取数据。例如,这个查询 SELECT * FROM DB.Table WHERE DateModified > Config.LastUpdateDate ImportHandler执行此类型的8个选择。每个select将从数据库
SELECT * FROM DB.Table WHERE DateModified > Config.LastUpdateDate
ImportHandler执行此类型的8个选择。每个select将从数据库中获得大约1000行
要连接到SQL SERVER,我使用com.microsoft.sqlserver.jdbc.SQLServerDriver
我可以为连接添加的参数有:
响应缓冲=自适应/全部
batchSize=整数
所以我的问题是:
每天这样做会出什么问题?网络错误除外
我想知道SQL Server在这种环境下是如何工作的
此外,我还必须决定如何实现此导入以及如何处理错误,但首先我需要知道可能出现的错误
谢谢
后期编辑
我的问题是,我不知道这个SQL查询怎么会失败。当我每天打电话给这个进口商时,它会对数据库进行10次查询。如果第五次查询失败,我必须选择:
回滚整个事务并再次执行,或者提交我从前4个查询中获得的数据,然后以某种方式重新执行查询5到10。但是如果这个查询总是失败,因为其他一些问题,我需要考虑另一种方法来导入这些数据
internet上的sql查询是否会因为超时操作或类似操作而失败?可能存在权限问题,不确定是否控制这些权限 捕获您可以想到的异常并包含一个catch-all异常exp可能是一个好主意 然后将整个异常视为最坏的情况,并在可以的地方回滚,并记录异常以便稍后包括在内 您也不会说要选择什么类型,请记住,文本/blob可能会占用更多空间,并且如果缓冲任何数据等,可能会在内部引发问题 虽然只是快速重读,如果只是选择,则不需要回滚 我认为你最好考虑一下你希望实现的目标,以及了解所有可能的问题是否会有所帮助
HTH我在处理此类导入后发现的唯一问题是: 网络问题-如果网络连接失败:在这种情况下,SOLR正在回滚任何更改,而提交没有发生。在我的程序中,我将此标识为错误,并且不将更改记录在数据库中。
感谢@GuidEmpty为我提供了他的帮助并澄清了这一点。我不明白这个问题,你能提供更多的上下文吗?就目前的情况而言,它与计算机编程时可能出现的问题没有太大区别?我同意毛里西奥的观点,很多问题都可能出现。虽然我会说1000行是非常小的。我会确保你在DataModified字段上有一个索引,而不是使用*写出你只需要的查询列。因此,可以这样做查询,而不会有太大的问题?唯一可能出现的问题是网络错误或超时(如果查询执行时间过长)。这就是全部。