Ⅰ java 向数据库添加大量数据时内存溢出 在不改变内存的情况下如何解决
具体问题具体处理。
你最起码应该说明是哪种数据库
是用JDBC还是ODBC还是hibernate。
一般这种情况都回是分批插入。
每个答会话插入50条,然后关闭,再重新做一次连接。
然后再插。
或者中间多做几次commit
access的数据库在使用某个版本的驱动时,如果是免费版的,
一次就只能插入50条数据。
Ⅱ Java前提下, MySQL数据库,一次性存储大量数据导致内存溢出
内存溢出导致程序崩溃,也分是java层崩了,还是mysql崩了。
如果是java层崩了,注意不要一次性加载太多的数据到内存,并且不在使用的数据要彻底放弃引用关系。java虽然是自动回收,回收的原则就是一个对象不再被持有,即引用计数为零。如果数据太大,可考虑临时文件。
如果是mysql崩了,首先增加配置缓存。一般来说mysql是不容易崩的,特别是插入操作的时候。查询的时候如果查询结果记录集特别大,会导致一个查询需要使用很大的内存空间,这种是有问题的。而插入操作都是一条一条的执行,不会导致大内存的使用。
如果仅仅是数据移植,也尽量不要用ORM框架,比如hibernate,mybatis这些东西,因为他们都有自己的缓存,直接使用JDBC比较好。
Ⅲ 一般什么情况下,数据库会大量占用内存导致最后的溢出情况
我能想到的常见的和理论上的情况有下面几种:
1. 假设同时有1000个人访问数据库,每人需要调用3M大小的数据,同时处理的数据量是3G,服务器只有2G内存。这种情况只是理论上,服务器数据库都有多线程阻塞技术,和事务处理逻辑,来保证数据处理的先后顺序,而不会是绝对的同时进行。不过一般的请求很少有超过50KB的,请求的数据量越大,同时连接的人数就越少,这是公认的数据库使用定律。
2. 复杂的join语句,造成对多个大容量的表进行join操作。
3. 数据库端过程函数编程。程序里面逻辑错误,数组分配不合理,或者陷入死循环,或者一次读出太多数据,然后一起处理。
Ⅳ JAVA查询数据库出现内存溢出
读取的时候内存不足了,你可以增大myeclipse的内存,在myeclise.ini里面,调大各个属性,然后你读取的时候存对象里后,通过byte字节来操作,用缓冲流,写入到磁盘中。
Ⅳ 数据库id自动增长,数据不停的删除和插入,这样的话id字段会不断的变大,直到溢出这个问题是怎么解决的
这个看情况了复,首先看看是不是有制使用自增列的必要,如果有必要前期要有预见性,对于可能会出现溢出的情况,则尽量使用bigint类型,当然这个要多占用存储空间。如果删除操作比较规则,比如会定期删除较早的数据,那么可以在id即将溢出的时候重置种子,从头开始自增,如果不能循环使用id值得话只能在即将溢出的时候修改表,用更大的数据类型来作为自增列的类型,这个过程因为涉及大量的数据更新插入操作,速度会很慢,通常尽量避免。如果id快溢出了,最好新建一个表来存储新增的数据。