[解決済み] PostgreSQLの隠し味【終了しました
2023-08-29 17:56:23
質問
これがまだ投稿されていないことに驚いています。Postgresで知っている面白いトリックがあれば教えてください。不明な設定オプションやスケーリング/perfのトリックは特に歓迎されます。
対応する9件のコメントには勝てると思います。 MySQL スレッド :)
どのように解決するのですか?
Postgres は MySQL よりもずっとまともなので、報告するようなトリックはあまりありません;-)
その マニュアル には、いくつかの素晴らしい パフォーマンス のヒントがあります。
その他、パフォーマンスに関する注意点をいくつか紹介します。
- autovacuum がオンになっていることを確認する
- postgres.conf (有効キャッシュサイズ、共有バッファ、ワークメモ...調整するための多くのオプション) を調べ上げたことを確認してください。
- pgpoolまたは pgbouncer を使って、データベースへの接続を最小限に抑えることができます。
- どのように EXPLAIN と EXPLAIN ANALYZE がどのように機能するかを学びます。 出力の読み方を学ぶ。
- クラスタ は、インデックスに従ってディスク上のデータをソートします。 大規模な (ほとんどの) 読み取り専用テーブルのパフォーマンスを劇的に向上させることができます。 クラスタリングは 1 回限りの操作であり、その後テーブルが更新された場合、その変更はクラスタリングされません。
以下は、それ自体は設定やパフォーマンスに関係しないが、私が便利だと感じたいくつかのことです。
現在何が起こっているかを見るため。
select * from pg_stat_activity;
検索用雑多な関数。
select * from pg_proc WHERE proname ~* '^pg_.*'
データベースの大きさを調べる。
select pg_database_size('postgres');
select pg_size_pretty(pg_database_size('postgres'));
すべてのデータベースのサイズを検索します。
select datname, pg_size_pretty(pg_database_size(datname)) as size
from pg_database;
テーブルとインデックスの大きさを調べる。
select pg_size_pretty(pg_relation_size('public.customer'));
あるいは、すべてのテーブルとインデックスを一覧表示する(おそらく、これのビューを作る方が簡単でしょう)。
select schemaname, relname,
pg_size_pretty(pg_relation_size(schemaname || '.' || relname)) as size
from (select schemaname, relname, 'table' as type
from pg_stat_user_tables
union all
select schemaname, relname, 'index' as type
from pg_stat_user_indexes) x;
トランザクションのネスト、部分的なトランザクションのロールバックが可能です。
test=# begin;
BEGIN
test=# select count(*) from customer where name='test';
count
-------
0
(1 row)
test=# insert into customer (name) values ('test');
INSERT 0 1
test=# savepoint foo;
SAVEPOINT
test=# update customer set name='john';
UPDATE 3
test=# rollback to savepoint foo;
ROLLBACK
test=# commit;
COMMIT
test=# select count(*) from customer where name='test';
count
-------
1
(1 row)
関連
-
[解決済み] PostgreSQLの場合。PostgreSQLのテーブルを表示する
-
[解決済み] PostgreSQLの "DESCRIBE TABLE"
-
[解決済み] PostgreSQL コマンドラインユーティリティ: psql を終了する方法
-
[解決済み] PostgreSQLのユーザーパスワードを変更する方法を教えてください。
-
[解決済み] どのバージョンのPostgreSQLを使用していますか?
-
[解決済み] PostgreSQLでデータベースのコピーを作成する
-
[解決済み] PostgreSQLデータベースへのSQLダンプのインポート
-
[解決済み] PostgreSQLデータベースの別サーバーへのコピー
-
[解決済み】Mac OS XでPostgreSQLサーバーを起動するには?
-
[解決済み] 人名と性別を対応させるのに適したライブラリをご存知の方はいらっしゃいませんか?[クローズド]
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 外部キーを主キーにするのは問題ないですか?
-
[解決済み] SQLite UPSERT / UPDATE OR INSERT
-
[解決済み] Postgresql - データベースをバックアップし、異なる所有者にリストア?
-
[解決済み] 1対1の関係はどのようなときに使うべきですか?
-
[解決済み] MS Accessの代替となるフリーソフト [終了しました]。
-
[解決済み] MySQLの隠れた機能
-
[解決済み] データベースにおけるカーディナリティとは?
-
[解決済み] SQLiteのテーブルから最後のオートインクリメントされたIDを取り出すには?
-
[解決済み] PostgreSQL どのクエリが実行されたかを確認する方法
-
[解決済み] ライブデータベースで気をつけるべきことNo.1とは?[クローズド]