質問編集履歴
3
情報追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -24,6 +24,12 @@
|
|
24
24
|
|
25
25
|
```
|
26
26
|
|
27
|
+
試みたこと
|
28
|
+
|
29
|
+
・vacuumdb table_name -z db_nameに修正して実行
|
30
|
+
|
31
|
+
→exec()のreturn_val引数が1で異常終了
|
32
|
+
|
27
33
|
|
28
34
|
|
29
35
|
■パターン2・・・pg_execでSQLとして実行
|
@@ -44,6 +50,24 @@
|
|
44
50
|
|
45
51
|
```
|
46
52
|
|
53
|
+
試みたこと
|
54
|
+
|
55
|
+
・begin; vacuum; commit;
|
56
|
+
|
57
|
+
→VACUUM cannot run inside a transaction blockでエラー
|
58
|
+
|
59
|
+
・end transaction; vacuum;
|
60
|
+
|
61
|
+
→VACUUM cannot be executed from a function or multi-command stringでエラー
|
62
|
+
|
63
|
+
|
64
|
+
|
65
|
+
(備考)
|
66
|
+
|
67
|
+
社内の開発環境ではパターン1で正常に動作していますが、パターン2はどれもエラー
|
68
|
+
|
69
|
+
本番環境ではパターン1、2ともにどの手法でもエラーとなっています。
|
70
|
+
|
47
71
|
|
48
72
|
|
49
73
|
上記のロジックは関数化してあり、table_nameは引数で受け取っています。
|
2
ソースコードの追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -12,7 +12,9 @@
|
|
12
12
|
|
13
13
|
// 実行コマンド
|
14
14
|
|
15
|
-
nohup vacuumdb
|
15
|
+
$cmd = "nohup vacuumdb table_name -z db_name &";
|
16
|
+
|
17
|
+
exec($cmd, $output, $res);
|
16
18
|
|
17
19
|
|
18
20
|
|
@@ -30,7 +32,9 @@
|
|
30
32
|
|
31
33
|
// 実行SQL
|
32
34
|
|
33
|
-
VACUUM FREEZE ANALYZE
|
35
|
+
$sql = "VACUUM FREEZE ANALYZE table_name";
|
36
|
+
|
37
|
+
pg_exec($sql);
|
34
38
|
|
35
39
|
|
36
40
|
|
@@ -39,6 +43,12 @@
|
|
39
43
|
VACUUM cannot run inside a transaction block
|
40
44
|
|
41
45
|
```
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
上記のロジックは関数化してあり、table_nameは引数で受け取っています。
|
50
|
+
|
51
|
+
どのテーブルにバキュームをかけるかはユーザが指定します。
|
42
52
|
|
43
53
|
|
44
54
|
|
1
脱字修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
管理画面からvacuumが実行できる作成したのですが
|
1
|
+
管理画面からvacuumが実行できる機能を作成したのですが
|
2
2
|
|
3
3
|
エラーが発生し、どうにもうまくいきません。
|
4
4
|
|