这是由于为自动增量列预先分配了值。Derby是内存数据库,在数据库首次加载到内存中时会缓存自动增量值。然后,
使用缓存而不是一次又一次地查询数据库来生成自动增量列的将来值。如果未正确关闭数据库,则缓存中的未使用值将永远丢失。
您有两种选择可以解决此问题:
添加;shutdown=true到JDBC URL。当应用程序结束时,这将关闭数据库。将derby.language.sequence.preallocator属性设置为1(其默认值为100)。这将确保从不缓存列值。请注意,大多数数据库的序列行为相似。例如,H2具有完全相同的行为,但使用的缓存大小32,而不是100像德比一样。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)