Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录/注册
切换导航
H
h2database
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
Administrator
h2database
Commits
3b349bd9
提交
3b349bd9
authored
15 年前
作者:
Thomas Mueller
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
When using large transactions or a small log size, the database could get very slow.
上级
cbdbbfd0
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
7 行增加
和
9 行删除
+7
-9
PageDataLeaf.java
h2/src/main/org/h2/index/PageDataLeaf.java
+1
-1
PageStore.java
h2/src/main/org/h2/store/PageStore.java
+5
-7
TestPageStore.java
h2/src/test/org/h2/test/unit/TestPageStore.java
+1
-1
没有找到文件。
h2/src/main/org/h2/index/PageDataLeaf.java
浏览文件 @
3b349bd9
...
@@ -391,7 +391,7 @@ public class PageDataLeaf extends PageData {
...
@@ -391,7 +391,7 @@ public class PageDataLeaf extends PageData {
boolean
remove
(
long
key
)
{
boolean
remove
(
long
key
)
{
int
i
=
find
(
key
);
int
i
=
find
(
key
);
if
(
keys
[
i
]
!=
key
)
{
if
(
keys
[
i
]
!=
key
)
{
throw
DbException
.
get
(
ErrorCode
.
ROW_NOT_FOUND_WHEN_DELETING_1
,
index
.
getSQL
()
+
": "
+
key
);
throw
DbException
.
get
(
ErrorCode
.
ROW_NOT_FOUND_WHEN_DELETING_1
,
index
.
getSQL
()
+
": "
+
key
+
" "
+
keys
[
i
]
);
}
}
index
.
getPageStore
().
logUndo
(
this
,
data
);
index
.
getPageStore
().
logUndo
(
this
,
data
);
if
(
entryCount
==
1
)
{
if
(
entryCount
==
1
)
{
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/store/PageStore.java
浏览文件 @
3b349bd9
...
@@ -204,6 +204,8 @@ public class PageStore implements CacheWriter {
...
@@ -204,6 +204,8 @@ public class PageStore implements CacheWriter {
private
Data
emptyPage
;
private
Data
emptyPage
;
private
long
logSizeBase
;
/**
/**
* Create a new page store object.
* Create a new page store object.
*
*
...
@@ -334,15 +336,10 @@ public class PageStore implements CacheWriter {
...
@@ -334,15 +336,10 @@ public class PageStore implements CacheWriter {
}
}
synchronized
(
database
)
{
synchronized
(
database
)
{
database
.
checkPowerOff
();
database
.
checkPowerOff
();
int
firstUncommittedSection
=
getFirstUncommittedSection
();
if
(
firstUncommittedSection
<=
log
.
getLogSectionId
())
{
// can not truncate currently - avoid switching
return
;
}
writeIndexRowCounts
();
writeIndexRowCounts
();
writeBack
();
writeBack
();
log
.
checkpoint
();
log
.
checkpoint
();
firstUncommittedSection
=
getFirstUncommittedSection
();
int
firstUncommittedSection
=
getFirstUncommittedSection
();
log
.
removeUntil
(
firstUncommittedSection
);
log
.
removeUntil
(
firstUncommittedSection
);
// write back the free list
// write back the free list
writeBack
();
writeBack
();
...
@@ -1115,8 +1112,9 @@ public class PageStore implements CacheWriter {
...
@@ -1115,8 +1112,9 @@ public class PageStore implements CacheWriter {
synchronized
(
database
)
{
synchronized
(
database
)
{
checkOpen
();
checkOpen
();
log
.
commit
(
session
.
getId
());
log
.
commit
(
session
.
getId
());
if
(
log
.
getSize
()
>
maxLogSize
)
{
if
(
log
.
getSize
()
-
logSizeBase
>
maxLogSize
)
{
checkpoint
();
checkpoint
();
logSizeBase
=
log
.
getSize
();
}
}
}
}
}
}
...
...
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/test/unit/TestPageStore.java
浏览文件 @
3b349bd9
...
@@ -72,7 +72,7 @@ public class TestPageStore extends TestBase implements DatabaseEventListener {
...
@@ -72,7 +72,7 @@ public class TestPageStore extends TestBase implements DatabaseEventListener {
long
before
=
System
.
currentTimeMillis
();
long
before
=
System
.
currentTimeMillis
();
stat
.
execute
(
"select nextval('SEQ') from system_range(1, 100000)"
);
stat
.
execute
(
"select nextval('SEQ') from system_range(1, 100000)"
);
long
after
=
System
.
currentTimeMillis
();
long
after
=
System
.
currentTimeMillis
();
// it's hard to test - basically it shouldn't
to too many checkpoint operations
// it's hard to test - basically it shouldn't
checkpoint too often
assertTrue
(
after
-
before
<
10000
);
assertTrue
(
after
-
before
<
10000
);
stat
.
execute
(
"drop table test"
);
stat
.
execute
(
"drop table test"
);
stat
.
execute
(
"drop sequence seq"
);
stat
.
execute
(
"drop sequence seq"
);
...
...
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论