MySQL互換の分散データベースで高可用性と水平スケーラビリティを備え大規模データをリアルタイムで処理できます。 詳細はこちら

こんにちは、DBREの周東(X: @dev_kngnr)です。DBRE では、freee の全プロダクトが利用するデータストア層の信頼性向上をミッションとしています。その活動の一環としてDB障害の原因の調査や、再発防止策の検討を行っています。この記事では、freee のとあるサービスで実際に起こったDB 障害と、その引き金となったMySQL のロック継承の仕組みについて紹介します。 概要 今回紹介するDB障害では、AuroraMySQL への接続失敗が頻発し、最終的には Web を開くこともできない状態にまで発展しました。原因を調査したところ、ROLLBACK TO SAVEPOINTによって引き起こされるロック継承が予期しないロックを発生させることが判明しました。この挙動とロングトランザクションが組み合わさることによって、たった一行のレコードロックのロールバックが Web サービ
PostgreSQL開発チームは先月(2025年5月)にリリースした「PostgreSQL 18 Beta 1」で非同期I/O処理を実装したことを明らかにしています。 同チームのテストによると、シーケンシャルスキャンやビットマップヒープスキャン、バキュームといった処理において2~3倍の性能向上が見られたとのことです。 同期処理はシンプルだが待ち時間が発生する これまでのPostgreSQLは同期I/O処理を採用していました。これは例えばOSにファイルリードのようなI/O処理を依頼すると、処理が終了して結果が返ってくるまで、すべてのPostgreSQLの内部処理が一時停止することを意味します。 同期I/O処理の利点はすべてのI/O処理が同期的に行われるため、実装が比較的シンプルで容易だというメリットがあります。これはバグを引き起こしにくいとも言えます。 一方で、ひとつひとつのI/O処理が完了

前回の在籍も含めると、累計9年半、本家MySQLチームでInnoDBの性能改善をターゲットに開発の仕事してきました。5.7でのb-tree index scaleや、8.0の初期の新機能で入ってしまった性能問題の修正など貢献できましたが、ここ数年は開発が進む度に導入される性能劣化に追いつけなくなってしまいました。悪いコードを見つけて直そうとしても抵抗が大きいのも大きな要因です。(遅くしたいのでしょうか?遅いことが認識できないのでしょうか?) この度、体制変更で退職を勧められたのを機に、別の営みでMySQL/InnoDBの性能を改善していくことにしました。どうせ、性能劣化に(私よりも)無頓着な現体制では私が性能を改善することは困難なので、成果は出ないでしょう。(直しても、同時に導入される新機能・修正による劣化に改善分を喰いつぶされることもしばしばあった、と考えています。キリがありません。そも
この記事はMySQL Advent Calendar2023 2日目の記事です。 (ちょっとフライング。。) 今回は僕がマジか、と思ってしまったMySQL の挙動について共有させていただきます。 BEGIN 中に BEGIN をすると COMMIT される 結論から言うとこれだけです ^^;; アプリエンジニアの方からお問い合わせをいただいた時にはこのことを意識したことすらなかったのでトランザクションの終了は COMMIT or ROLLBACK にてされるのだという先入観で動いていました。 ざっくりと言うとこんな感じ BEGIN; INSERT INTO testtable VALUES (1); BEGIN; このタイミングで別のターミナルを立ち上げて中身を確認するとなんと testtable には 1 という値が入っています。 個人的にはまじかーー、な挙動だったのでもしかしたら

MySQL/Aurora/TiDBロック入門 – 第3回ロック読取りも SELECT は止められない【解説動画付】MySQL とその互換DB のロックの挙動を紹介する入門シリーズ、第3回は第2回で紹介したロックモニターを使って、業務ではよく使われているロック読取りについて解説します。 ロック読取りは、ゲームのバックエンドサーバーなど「同時に多数の処理をこなすけど、データとしての一貫性も重要」な場合に必須となるテクニックです。既に使っているという方も復習を兼ねてぜひご覧ください! ★ 第1回 トランザクション分離レベル ★ 第2回 ロックモニターの読み方 ★ 第3回 ロック読取りも SELECT は止められない ★ 第4回 INSERT を止めるインテンションロック ★ 第5回 WHERE 条件と違うロック読取り ★ 第6回 performance_schema ★ 第7回ギャップロック

tl;dr はじめに DuckDB とは DuckDB では何が読めるのか 使ってみる S3 上のJSON を読んでみる リレーショナルデータベース 他ツールではなく DuckDB を使うメリット しくじりポイント (特にリリースされたばかりの)バージョンには気をつける S3 のオブジェクト数が多い場合不都合がありがち スレッドの調整が必要な場合も Redshift には未対応 終わりに 付録MySQL のデータを読み込む例のMySQL 側の準備 tl;dr DuckDB 便利だよ。分析以外でも使えるよ 色々な場所のデータを閲覧・結合できるよ。標準SQLも使えるよ ただし、細かい落とし穴は色々あるので気をつけてね はじめに2023年4月にデータエンジニアとして入社したmin(@not_rogue)です。暖かくなるにつれ、YouTube で見た南伊豆ロングトレイル | 松崎町に行く機運が

SQL実行の流れ まずはSQLがどのような流れで実行されるのかを見ていきます。SQL実行の流れは大まかに捉えると以下のようになります。 パーサ パーサでは、ユーザーから送信されたクエリを受け取り、その文法的な正確さを検証します。SQLクエリが正しくフォーマットされているか、必要な構文要素が全て含まれているかをチェックし、例えばFROM句で指定されたテーブルが存在するかどうかも確認します。 文法的なエラーがある場合、例えばカンマの欠落や存在しないテーブルの参照など、クエリはエラーとして返されます。 エラーがない場合は、クエリは「抽象構文木」というデータ構造に変換されます。これにより、データベースはクエリをより効率的に解析し、次の処理ステップに進めることができます。 オプティマイザSQLクエリがパーサを通過した後、次にクエリの最適化を行うのが「オプティマイザ」です。オプティマイザの主な役割

この記事は、はてなエンジニア Advent Calendar2023の2024年1月17日の記事です。はてなエンジニア Advent Calendar2023 -Hatena DeveloperBlog id:hagihala です。先日、はてなブログのDB を RDS forMySQL 5.7 から 8.0 へアップグレードしたので、工夫した点などを共有します。AuroraMySQL 3.x にしなかった理由MySQL 5.7 -> 8.0 で対応した変更点 character set や collation のデフォルトが変更される explicit_defaults_for_timestamp がデフォルトで有効になるSQL mode の変更 デフォルトの認証プラグインが caching_sha2_password になり、mysql_native_passw

オラクル、MySQLのデータベースエンジンでJavaScriptをサポート、ストアドプロシージャなどJavaScriptで記述可能に。プレビュー版をリリース オラクルは、MySQLのストアドプロシージャやストアドファンクションの記述言語としてJavaScriptをサポートすると発表し、対応したMySQL Enterprise Editionのプレビュー版を公開しました。Oracle CloudやAWS、Microsoft Azure上でオラクルが提供しているマネージドサービス、MySQL Heatwaveでも利用可能になっています。JavaScriptのサポートでMySQLエコシステムの拡大を狙う ストアドプロシージャやストアドファンクションは、データベースエンジン側にあらかじめまとまったクエリの処理などを登録しておき、必要に応じて呼び出すことでその処理を実行できるという機能です。 複

こんにちは、CTOの森です。iimonは今回が初のアドベントカレンダー参加です!本記事はiimonアドベントカレンダー1日目の記事となります。 はじめに 検証した環境MySQL/mecabのインストール 大量のデータを入れる 1レコードのINSERTにかかった時間 検索してみる 検索文字列が「出来事」の場合 インデックスなし N-gram(bi-gram) IN NATURAL LANGUAGE MODE IN BOOLEAN MODE MeCab IN NATURAL LANGUAGE MODE IN BOOLEAN MODE 検索文字列が「チューリングはロンドンのリッチモンドに住み」の場合 まとめ 参照したサイト 最後に はじめに 今回はMySQLで全文検索機能を使う際のパフォーマンスについて書こうと思います! 全文検索をちゃんと使うのであればElasticsearchやSolrな
AWSDatabaseBlog IntroducingAmazonAuroraMySQL enhanced binarylog (binlog)AmazonAurora is aMySQL and PostgreSQL-compatible relationaldatabase built for the cloud.Aurora combines the performance and availability of traditional enterprisedatabases with thesimplicity and cost-effectiveness of open-sourcedatabases.Aurora has a history of innovating arounddatabase engines and the underlyi

Amazon RDS for PostgreSQL now supports major version PostgreSQL 15Amazon RelationalDatabase Service (Amazon RDS) for PostgreSQL now supports the latest major version PostgreSQL 15. New features in PostgreSQL 15 include theSQL standard "MERGE" command for conditionalSQL queries, performance improvements for both in-memory and disk-based sorting, and support for two-phase commit and row/column f

こんにちは、ブログチームでエンジニアをしている id:Furutsuki です。ブログチームでは長らくEC2上でMySQLを運用していましたが、種々の理由により2021年末から2022年中盤にかけて、このデータベースをAmazon RDSに移行しました。 移行にあたって、新旧のデータベースやサービスの様子を一覧できる“RDS化ダッシュボード”をMackerelで作成しました。チームでは日常的な監視にダッシュボードを活用していますが、個人的にダッシュボードを一から作ったのは初めてだったので、このダッシュボードの配置や狙いについて書いてみようと思います。 RDS化ダッシュボードの全体像 サービスの状態を確認するコーナーの詳細DBの様子の変遷を確認するコーナーの詳細 皆さんのダッシュボードを教えてください! RDS化ダッシュボードの全体像 まずはダッシュボード全体をご覧ください。 こうして画像

こんにちは ハタ です。 Mirrativのインフラ内で実際に開発・運用している内製のRedisサーバについてお話したいなと思っています。 前回の記事 は、今回紹介する内製Redisサーバで起きたメモリリーク対策に関するお話しとなっておりますので、もし未読であればあわせて読んでいただければと思います。 今回はなぜ Redis サーバを内製することにしたのかの経緯や実装についての簡単な紹介が出来たらなと思っています Redis 導入の経緯 課題感: 揮発しないでほしい 課題感: 生存時間が短いデータを保持したい 課題感: 日次データをなんとかしたい 候補 Redis Cluster のヨシアシ: slot 管理 Dynomite のヨシアシ: sharding/replication radisha = Raft + Redis + HA Raft クラスタ コマンドとデータストア レプリケ

Starting today, you can perform an in-place upgrade of yourAmazonAurora database cluster fromAmazonAuroraMySQL-Compatible Edition 2 (withMySQL 5.7 compatibility) toAuroraMySQL-Compatible Edition 3 (withMySQL 8.0 compatibility). Instead of backing up and restoring thedatabase to the new version, you can upgrade withjust a few clicks in theAmazon RDS Management Console or by using the A

Postgres PlaygroundEnhance your Postgres skillsOften times the gap in trying/learning something in Postgres is having agood tangible example. The playground makes that easier by loading a datasets thenguiding you step by step through an exercise leveraging that dataset in a practical way. Whetherit'sjust the basics of interacting in the Postgres CLI with psql , improving your querying skills w

MySQL では sort_buffer_size 以上にソート領域が必要になった場合、もしくは一部の条件に当てはまるSQLについては、内部一時テーブルを作成し処理を行うという仕組みになっています。 8.4.4MySQL での内部一時テーブルの使用 この内部一時テーブルの仕組みにMySQL 8.0 からTempTable ストレージエンジンを利用する事ができるようになりました。TempTable ストレージエンジンの挙動については、過去の弊社ブログ記事で説明しています。TempTable ストレージエンジンについてTempTable ストレージエンジンはMySQL 8.0で導入されたということもあり、初期パッチバージョンに比べて改善が行われています。 今回の記事では、TempTableストレージエンジンの最近追加された機能についてご紹介します。 基本的なソートバッファと内部一時

リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く