Optimizing Subqueries, Derived Tables, View References, and Common Table Expressions
これはPostgreSQL Advent Calendar 2016の13日目の記事です。 はじめに PostgreSQLには、継承とトリガを利用したテーブルパーティション機能が従来からありましたが、パーティションへのINSERTが非常に遅いという問題がありました。一方、それらの従来のテーブルパーティション機能の様々な問題を解決するため、NTT OSSセンタのAmit Langoteさん(@amitlan)が中心となり、新たな改善版テーブルパーティション機能が(記事執筆時点で)開発中のPostgreSQL10に取り込まれました。PostgreSQL10では、従来版と新機能版の2つのテーブルパーティション機能を利用できることになります。 この記事では、PostgreSQL10新機能版テーブルパーティションのINSERT性能が、従来のものに比べてどれだけ改善されているのか簡単に比較検証します。
#CakePHP3では、saveAllがない cakephp2系だと、saveAllというのがあって、 複数行INSERTするときにはそれを使ってました。 でも、cakephp3.xだと、saveAllはなくなっていました。 これがCakePHP3式のsaveAllだ...! で、どうしたらいいか調べたところ、 ドキュメント(英語)にこんな記載がありました。 そちらで示されているサンプルコードを、一部変更して記述すると、 下記のような形になってます。 // TableRegistryでモデル取得 $articles = TableRegistry::get('Articles'); // 保存するデータ(2つ) $data = [ [ 'title' => 'First post', 'published' => 1 ], [ 'title' => 'Second post', 'publ
表の中で、重複したデータの行を削除したいことは、しばしば有りますね。 行の重複の削除といっても、行のどの項目に着目するかによって、 列の特定の項目(フィールド)を基準にして、重複行を削除したい 列全体の項目の組合せで、重複行を削除したい の、二つのケースがあるでしょう。 列全体の項目の組合せで、重複行を削除する方法については、重複行の削除(DISTINCT) の部分で紹介しました。 ここでは、特定の項目(フィールド)を基準にして、重複行を削除する方法を紹介します。 Access では、重複を排除したい特定の項目(フィールド)を、主キーとすることで、重複を削除します。 Access の操作としては、 重複レコードを含むテーブルの構造のコピーを作成し、重複レコードを含むすべてのフィールドの主キーを作成して、 元のテーブルから新しいテーブルへの追加クエリを実行します。 主キーのフィールドは重複レ
先日、作っているアプリケーションにバグが発生しました。バグの内容は次のようなものでした。 同時に存在してはいけないはずのデータが、DB に存在する 整合性のチェックはアプリケーションレベルで行っている 一意制約のような単純なものではないので、アプリケーションレベルで実装 整合性のチェックロジックは正しい これに対し、バグは次のような状況で発生したと仮説を立てました。 ユーザがレコードを一括登録しようとする 登録ボタンを押したがレスポンスが遅い この間、整合性チェックが走っている ユーザはもう一度登録ボタンを押した 2回目の登録の整合性チェックが走り始める 1回目の登録の整合性チェックが完了、INSERTが始まる 2回目の登録の整合性チェックが完了、INSERTが始まる 2回目の登録の整合性チェックの間、DBにはまだ1回目の登録によるINSERTが実行されていないので、チェックを通過した 結
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く