Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit51412a9

Browse files
Fenimorkindmpgpro
authored andcommitted
FIX for max_connection more faster
Conflicts:src/backend/commands/waitlsn.c
1 parent9c6b9bd commit51412a9

File tree

1 file changed

+18
-2
lines changed

1 file changed

+18
-2
lines changed

‎src/backend/commands/waitlsn.c

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ typedef struct
5656
typedefstruct
5757
{
5858
chardummy;
59+
intbackend_maxid;
5960
BIDLatchl_arr[FLEXIBLE_ARRAY_MEMBER];
6061
}GlobState;
6162

@@ -68,17 +69,31 @@ WLOwnLatch(void)
6869
SpinLockAcquire(&state->l_arr[MyBackendId].slock);
6970
OwnLatch(&state->l_arr[MyBackendId].latch);
7071
is_latch_owned= true;
72+
73+
if (state->backend_maxid<MyBackendId)
74+
state->backend_maxid=MyBackendId;
75+
7176
state->l_arr[MyBackendId].pid=MyProcPid;
7277
SpinLockRelease(&state->l_arr[MyBackendId].slock);
7378
}
7479

7580
staticvoid
7681
WLDisownLatch(void)
7782
{
83+
inti;
7884
SpinLockAcquire(&state->l_arr[MyBackendId].slock);
7985
DisownLatch(&state->l_arr[MyBackendId].latch);
8086
is_latch_owned= false;
8187
state->l_arr[MyBackendId].pid=0;
88+
89+
if (state->backend_maxid==MyBackendId)
90+
for (i= (MaxConnections+1);i >=0;i--)
91+
if (state->l_arr[i].pid!=0)
92+
{
93+
state->backend_maxid=i;
94+
break;
95+
}
96+
8297
SpinLockRelease(&state->l_arr[MyBackendId].slock);
8398
}
8499

@@ -124,14 +139,15 @@ WaitLSNShmemInit(void)
124139
SpinLockInit(&state->l_arr[i].slock);
125140
InitSharedLatch(&state->l_arr[i].latch);
126141
}
142+
state->backend_maxid=0;
127143
}
128144
}
129145

130146
void
131147
WaitLSNSetLatch(void)
132148
{
133-
uint32i;
134-
for (i=0;i< (MaxConnections+1);i++)
149+
uinti;
150+
for (i=0;i <=state->backend_maxid;i++)
135151
{
136152
SpinLockAcquire(&state->l_arr[i].slock);
137153
if (state->l_arr[i].pid!=0)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp