
実際、すでに2日が過ぎていますが、Habrに関する記事はまだ誰も書いていないので、この省略をなくさなければなりません。
では、このバージョンのPostgreSQLの新機能は何ですか?
まず、バージョン管理自体が変更されました。 「トップ10」の前に、9.xのマイナーバージョンが多く見られました。これらは約1年に1回リリースされ、同時にマイナーなものではない重大な変更が導入されました。 したがって、バージョン10から、10、11、12などの番号に決定されました。 ところで、MySQLは同じパスをたどり、5.7から8.0にジャンプしたようです
さて、これがすべてささいなことです。最後に行きましょう。
論理複製
これは誰もが長い間待っていたものです。 さまざまな拡張機能をスローモーション(トリガーの複製)やその他の松葉杖に置き換えます。
これで、個々のテーブルを他のボックスから他のデータベースに複製できます。
レプリケーションは、 CREATE PUBLICATIONおよびCREATE SUBSCRIPTIONコマンドを使用して行われます。 すべてが非常に簡単です。
この機能が非常に新しいことは明らかであるため、現時点では論理レプリケーションにいくつかの機能がありません。
- スキーマなし/ DDLレプリケーション
- シーケンス複製なし
- TRUNCATEコマンドは複製されません
それにもかかわらず、これはまだ大きな前進であり、場合によってはスローを投げることができます!
パーティショニング
テーブルの継承によって以前のパーティションを強化できる場合、トップ10には、宣言パーティションと呼ばれるこのための組み込みツールがありました。
これを行うには、 PARTITON BY RANGE
(またはLIST
)キーワードがメインテーブルに追加されます。これは、このテーブルがパーティション分割されていることを示します(またはロシア語でこれをどのように言えますか?)。
特定のパーティションの場合、 PARTITION OF ... FOR VALUES FROM (...) TO (...)
式はデータの範囲を設定します。
パーティションには、実稼働環境で使用する前に留意する必要があるいくつかの制限があります。PostgreSQL10での宣言型パーティションの制限
ID列
要するに、書く機会
id int GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY
の代わりに
id serial PRIMARY KEY
それは何を与えますか?
事実は、シリアルという単語はおおよそDEFAULT nextval( 'シーケンス名')構造の別名です。 すなわち 基本的に個別のテーブル、個別のシーケンス。 便利かもしれませんが、できません。 たとえば、これは、テーブルに挿入する権利(GRANT INSERT)を付与する場合、個別にシーケンスの付与を付与する必要があるという事実につながります。
ところで、新しいレコードはSQL標準に準拠しています。
その他
- 並列処理、特に並列ビットマップヒープスキャン、並列インデックススキャン、並列マージ結合などが改善されました。 詳細については、ロバートハースのブログをご覧ください。
- 物理複製パフォーマンスの改善
- ハッシュインデックスが複製可能になります
- jsonb列での全文検索のサポート
- SCRAM認証
- xmlを使用するためのサポートの改善
- 結合を使用するときのクエリプランナーの改善:結合された行が結合で複数の行を生成できないことをプランナーが理解している場合、他の行の検索に時間を浪費することはできません。 要求の例は、 このコミットのテストで見つけることができます。
変更点の完全なリストはここにあります 。
誰かがすでに戦闘でv10を試してみた場合は、コメントであなたの印象を共有してください。
更新 バージョンシステムはあまり良くないと考えられています。 PostgreSQL Xをトレンドに呼んでいました:)