こんにちは。エイチームライフデザインデザイン開発本部の加藤(@mkin)です。最近は "そこの穴、埋めますよ" の精神でエンジニアやってます。 はじめに 2024年2月29日、Aurora PostgreSQL v11の標準サポート終了日に向けて、初めてメジャーバージョンのアップグレードをする機会が得られたので、記録しておきたいと思います。 準備 初めてのことなので、右も左も分からない状態から始まりました。 「よく分からないけど、最新バージョンに上げておけばいいんでしょ?」 というものではなかったのです... どのバージョンまで上げるか方針を決める 当初は定期的なバージョンアップの計画がありませんでした。せっかくなので、これを機にどういう方針でバージョンアップしていくかを決めることにしました。 作業時点の最新バージョンは v16.1 でしたが、社内の有識者の方々がアドバイスをくださり、最新
注意 この記事の実験は実際の運用を正確に反映していない恐れがあります(コメント欄の @hmatsu47 さんの投稿を参照)。 実務のアプリケーションでは異なる結果になる可能性もあるので、本記事の内容はあまり鵜呑みにせず参考程度に留めておいてください。 ※「実務に近い環境で実験してみた」という投稿もお待ちしています! はじめに データベース(この記事ではPostgreSQLを対象とします)の主キーは1,2,3のような連番の整数値を主キーにするSERIALと、"00009236-b73c-4338-8ebd-e1f6c4f4fdd8"のようなランダムな文字列を主キーにするUUIDがあります。 それぞれメリットとデメリットがありますが、パフォーマンスについてはどうでしょうか?なんとなくSERIALの方がシンプルなぶん、速そうなイメージがありますが、実際はどうなのか調べてみました。 実行環境 Ma
はじめに なんかサービス作るときに、DBどうする問題があると思います クラウドのDBはなかなかお高くて、低コストで運用したいなと思ったときに困ったので調べてました 結果、Supabaseがよさそうだったので使ってみます 単純にDBだけならPlanetScaleのほうが無料枠が充実していてよいかと思ったけど、ユーザ認証など今後も見据えてSupabaseをチョイスしました 今回は、RailsからSupabaseのPostgreSQLに接続してみます 環境 Rails v7.0.4 Supabase Postgres Supabase Sing up GitHubのアカウントがある人はGitHub認証すればOKです Supabase Create Project Projectを作成します Project名はお好きな名前を入力 DBのパスワードは、Generate a passwordリンクをク
トランザクション分離レベルについての教養があったほうがこの記事の内容を理解しやすいため,必要に応じてまず以下を参照されたい。 背景 以前, Qiita で以下の記事を投稿した。今回の議題に直接的な関係はないが,関連している部分があるため引用する。 MySQL/Postgres とも, MVCC アーキテクチャの恩恵で, SELECT と UPDATE は基本的には競合しない。 単一レコードのシンプルな UPDATE でも排他ロックされ,排他ロック中のレコードへの UPDATE での変更操作は トランザクション分離レベルによらず ブロックされる。UPDATE 文に含まれる WHERE 句での検索もブロックされ,これはブロックされない SELECT による検索とは別扱いになる。 但し UPDATE 文の WHERE 句上で,更新対象をサブクエリの SELECT から自己参照している場合は例外。
WHERE 条件のフィールドを UPDATE するのって,明示的にロックしてなくても安全?全パターン調べてみました!MySQLSQLPostgreSQLDatabaseQiitaEngineerFesta2022 TL; DR MySQL/Postgres とも, MVCC アーキテクチャの恩恵で, SELECT と UPDATE は基本的には競合しない。 単一レコードのシンプルな UPDATE でも排他ロックされ,排他ロック中のレコードへの UPDATE での変更操作は トランザクション分離レベルによらず ブロックされる。UPDATE 文に含まれる WHERE 句での検索もブロックされ,これはブロックされない SELECT による検索とは別扱いになる。 但し UPDATE 文の WHERE 句上で,更新対象をサブクエリの SELECT から自己参照している場合は例外。トランザクション分離
{ "plpgsqlLanguageServer.database": "データベース名", "plpgsqlLanguageServer.user": "ユーザ名", "plpgsqlLanguageServer.password": "パスワード", "plpgsqlLanguageServer.definitionFiles": [ // glob をサポート。 "**/*.sql", "**/*.psql", "**/*.pgsql" ], // Language Server が対応するファイルの拡張子はデフォルトで ['*.pgsql', '*.psql'] です。 // ( SQLite など他の RDS と競合させないためです。) // '*.sql' のファイルも対応させたい場合は、下記の設定を追加してください。 "files.associations": { "*.sq
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く