- 浏览: 928128 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (445)
- 备忘 (0)
- java基础 (28)
- jsp (15)
- css (4)
- javascript (30)
- struts (7)
- servlet (2)
- struts2 (7)
- jdbc (16)
- hibernate (22)
- ibatis (0)
- jpa (1)
- spring (17)
- spring定时任务 (8)
- 整合开发 (12)
- JavaArticle (0)
- php (6)
- velocity (2)
- mysql (19)
- sqlserver (52)
- oracle (23)
- lucene (49)
- ajax (13)
- dwr (5)
- JFreeChart (1)
- service (14)
- tools (18)
- c#基础 (20)
- 程序安全 (0)
- 学习网站 (1)
- 社会需求 (2)
- flash (1)
- 流媒体 (1)
- java_code (1)
- htmlparser (1)
- 速动画教程 (5)
- 设计模式 (1)
- xml操作 (2)
- uml操作 (4)
- 测试 (1)
- linux (8)
- 版本控制 (4)
- 服务器 (12)
- 安全 (6)
- 美工 (2)
最新评论
-
Zhang_amao:
我想问一下, 你用的lucene版本和highligher的版 ...
使用Lucene的Highlighter实现文件摘要的自动提取 -
wangmengfanwangzhi:
博主,你的QQ是什么啊?有关于lucene的问题想要请教啊~~ ...
Lucene下载及测试 -
cutesunshineriver:
讲得很好,理解起来很顺,对个人学习的帮助性很大,谢谢博主。
velocity入门一 -
libin2722:
我这里有一个任务调度,在晚上3点时候会自动将数据库中某表的数据 ...
Lucene-2.2.0 源代码阅读学习(16) -
greatwqs:
java -cp $JVM_ARGS $classpath ...
java的cp命令
今天在修改search的建立索引的程序的时候,发现了这个错误
使用jdbc读取SQLServer2005的一个表全部记录,该表具有10W记录,结果发生以下错误:
- com.microsoft.sqlserver.jdbc.SQLServerException: 系统内存不足。请对大型 ResultSet 使用服务器端游标: Java heap space。ResultSet 大小:236,535,956。JVM 总内存大小:312,213,504。
- at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown Source)
- at com.microsoft.sqlserver.jdbc.DBComms.receive(Unknown Source)
- at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(Unknown Source)
- at com.microsoft.sqlserver.jdbc.SQLServerStatement$StatementExecutionRequest.executeStatement(Unknown Source)
- at com.microsoft.sqlserver.jdbc.CancelableRequest.execute(Unknown Source)
- at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeRequest(Unknown Source)
- at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeQuery(Unknown Source)
- com.microsoft.sqlserver.jdbc.SQLServerException: 系统内存不足。请对大型 ResultSet 使用服务器端游标: Java heap space。ResultSet 大小:236,535,956。JVM 总内存大小:312,213,504。
- at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown Source)
- at com.microsoft.sqlserver.jdbc.DBComms.receive(Unknown Source)
- at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(Unknown Source)
- at com.microsoft.sqlserver.jdbc.SQLServerStatement$StatementExecutionRequest.executeStatement(Unknown Source)
- at com.microsoft.sqlserver.jdbc.CancelableRequest.execute(Unknown Source)
- at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeRequest(Unknown Source)
- at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeQuery(Unknown Source)
com.microsoft.sqlserver.jdbc.SQLServerException: 系统内存不足。请对大型 ResultSet 使用服务器端游标: Java heap space。ResultSet 大小:236,535,956。JVM 总内存大小:312,213,504。 at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown Source) at com.microsoft.sqlserver.jdbc.DBComms.receive(Unknown Source) at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(Unknown Source) at com.microsoft.sqlserver.jdbc.SQLServerStatement$StatementExecutionRequest.executeStatement(Unknown Source) at com.microsoft.sqlserver.jdbc.CancelableRequest.execute(Unknown Source) at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeRequest(Unknown Source) at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeQuery(Unknown Source)
使用以下代码无效
- Statement stmt = con.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);
- stmt.setFetchSize(100);
- Statement stmt = con.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);
- stmt.setFetchSize(100);
Statement stmt = con.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY); stmt.setFetchSize(100);
查文档得知与sqlserver jdbc驱动的select Method有关。selectMethod分为direct和cursor。当使用direct时,驱动会一次性载入所有结果集到jvm内存中,因此造成了out of memory;而使用cursor时,会在服务器端创建一个cursor,因此不会占据客户端的大量内存,办法有两种:
[list=1]
这种方式会影响整个应用程序,可能引起其他普通情况的读取性能下降。
- Statement stmt = con.createStatement(SQLServerResultSet.TYPE_SS_SERVER_CURSOR_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);
- Statement stmt = con.createStatement(SQLServerResultSet.TYPE_SS_SERVER_CURSOR_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);
Statement stmt = con.createStatement(SQLServerResultSet.TYPE_SS_SERVER_CURSOR_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);
这种方式会造成SQLServer的API侵入,但不失为一种更好的办法。
发表评论
-
数据权限
2012-10-30 12:47 10751 创建用户test 用户映射 映射到此登录名用 ... -
索引问题
2012-07-26 10:18 715//唯一行索引 create unique index 字段 ... -
SqlServer添加修改删除字段
2012-07-26 09:22 1096SqlServer(Transact-SQL): 添加 ... -
仅当使用了列的列表 并且 identity_insert 为 on 时 才能在表 中为标识列指定显式值。
2012-03-08 14:31 2268SET IDENTITY_INSERT products2 O ... -
sql server触发器
2010-10-28 11:21 1262最近在使用触发器实现数据同步,中间遇到两个问题问题一 大字段不 ... -
往Sqlserver插入数据报错:传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确
2010-04-19 11:19 2070在新闻表中有一个字段:Content Text类型其他方面都 ... -
sql server2005数据库备份恢复出错
2010-04-06 15:25 2568现象:备份成功,还原时提示--System.Data.SqlC ... -
创建链接服务器(oracle,sql server,access,excel)
2010-04-05 16:55 2925/////////////////////////////SQ ... -
SQL COUNT DISTINCT 函数
2010-03-23 16:40 1800SELECT COUNT(DISTINCT ... -
分解字符串-sql中执行带参数的函数
2010-03-12 16:22 1775set ANSI_NULLS ONset QUOTED_IDE ... -
过滤html
2010-01-19 17:33 967create function [dbo].f_FilterH ... -
使用正则表达
2010-01-19 17:31 982先创建自定义函数------- ... -
SQL中LEN ()与DATALENGTH ()
2010-01-04 16:42 1604LEN ( string_expression )参数:要计算 ... -
SQLServer2005新增序列功能的几个函数:ROW_NUMBER, RANK, DENSE_RANK, and NTILE
2009-12-07 15:43 11251 ROW_NUMBER SELECT Produ ... -
sqlserver数据库收缩
2009-11-03 21:26 1112有时候因为数据库日志文件过大,日志无须保存,清理空间 ... -
修改sqlserver密码
2009-10-09 09:06 1385验证的时候,选择按照Windows身份验证,就直接进去了……汗 ... -
获取SQL Server数据库元数据的方法
2009-10-02 14:06 1634数据简介元数据 (metadata) 最常见的定义为“有关数据 ... -
SQL数据导入导出大全
2009-09-13 17:57 1337******* 导出到excelEXEC master..xp ... -
insert into 后获得自动插入的id(select @@identity)
2009-06-23 17:11 2644当运行完插入语句后,执行select @@identity ... -
不同服务器数据库导入方法2
2009-05-11 10:16 1294这个是建连接的方法 还没有实践过 不同服务器数据库之间的数据 ...
相关推荐
- **Buffer Pool Extension**:该功能允许将非易失性内存(如SSD)作为缓冲池的扩展,增加SQL Server 可用的缓冲区大小,从而提升对大量数据的处理能力。 - **缓冲区管理**:通过监控缓冲区的使用情况,调整缓冲区中...
当用户连接并执行查询时,SQL Server会逐渐获取更多内存以缓存数据和提高查询性能。SQL Server的目标是获取尽可能多的内存,但同时要保证操作系统有足够的内存避免不必要的页面交换,以维持高效运行。默认情况下,...
- SQL Server 2005的安装可能需要大量磁盘空间,尤其是在选择安装所有组件时。为了节省空间,可以取消一些非必要的组件(如BI组件)的安装。 - 安装完成后,系统会自动删除临时文件,实际占用空间会减少。 5. **...
- 大内存支持:64位系统可支持超过4GB的物理内存,适合处理大量数据。 - 更高的性能:利用更多的处理器核心,提升并发处理能力。 - 兼容32位应用程序:同时支持32位和64位应用,提供更广泛的应用选择。 3. **SQL...
在SQL Server环境中,虚拟内存不足的情况可能导致服务器性能下降甚至出现错误。当SQL Server启动时,它会预留一部分虚拟地址空间给缓冲池,用于存储数据和过程缓存。在SQL Server 7.0中,这个预留空间是256 MB,而在...
64位版本的SQL Server 2005能够利用更多的内存,适合处理大数据量或者高并发的环境;而32位版本则适用于内存有限或者旧版操作系统的计算机。 SQL Server 2005的核心特性包括: 1. **增强的数据库引擎**:SQL ...
SQL Server作为一个高性能的关系型数据库管理系统,在处理大量数据时,其内存管理机制对于性能优化至关重要。本文将深入探讨SQL Server内存管理的基本概念,包括内存如何被分配、使用及管理的原则,并结合实际案例...
- 分批次导入数据,避免一次性加载大量数据导致内存压力过大。 - 考虑使用事务处理,保证数据的完整性和一致性。 6. **安全性**: - 避免硬编码数据库连接字符串,最好存储在配置文件或安全的环境中。 - 使用...
当数据量大时,为防止内存溢出,可以考虑分页或流式处理。使用PdfPTable的setKeepTogether(false)可以确保表格不会跨页,当一行数据无法全部显示在一页时,自动换行到下一页。此外,可以使用PdfDocument的newPage()...
在PHP与MySQL交互时,有时会遇到因查询大数据量而导致的内存不足问题。这主要由于PHP默认内存限制和处理查询结果的方式所致。当查询结果集过大时,PHP尝试一次性加载所有数据到内存中,从而可能导致内存耗尽。本文将...
当Total Server Memory低于Target Server Memory时,表明SQL Server还有能力获取更多内存。SQL Server会持续缓存新的数据和执行计划,直到达到目标内存。 3. **Optimizer Memory (KB)**: 表示查询优化器用于优化...
### 通过SQL 2005系统表监控SQL Server的运行状况 在SQL Server 2005中,为了确保数据库系统的稳定性和高效性,管理员需要密切关注系统的运行状况,并及时发现潜在的问题。其中一种有效的方法就是利用SQL Server ...
在SQL Server 2005中,分页查询是一个常见的需求,特别是在处理大量数据时,为了提高用户体验,通常需要一次性加载一定数量的数据,而不是一次性显示所有数据。以下将详细讲解SQL Server 2005中分页查询的常用方法。...
标题“VS2005+SQL2005分页自定义控件”指出我们将创建一个自定义的分页工具栏,该工具栏允许用户在大量数据中进行导航,而无需一次性加载所有记录。这在处理大数据集时特别有用,因为它减少了内存消耗并提高了页面...
在处理大量数据时,建议使用`PreparedStatement`而不是`Statement`,因为它能提高性能并防止SQL注入攻击。 此外,随着技术的发展,现代Java应用程序通常会使用ORM(Object-Relational Mapping)框架,如Hibernate或...
Microsoft SQL Server 2005 JDBC Driver是一款由微软公司开发的Java数据库连接(JDBC)驱动程序,专门用于连接Java应用程序与Microsoft SQL Server 2005数据库。JDBC驱动是Java平台的一部分,它允许Java开发者通过...
在 SQL Server 2005 的众多版本中,Express 版本是一款免费提供的轻量级数据库系统,适用于开发人员和小型项目。然而,Express 版本并未内置类似企业管理器(Enterprise Manager)这样的图形化管理工具,这给日常...
可以通过设置`fetchSize`属性来控制每次获取的数据量,以减少内存的消耗。这种方式与MySQL类似,都是为了减少一次性加载到内存中的数据量。 **3. Oracle** Oracle提供了类似的机制,但在默认情况下并不开启游标...