タグ

関連タグで絞り込む (331)

タグの絞り込みを解除

MySQLに関するdelegateのブックマーク (503)

  • DB改造屋雑記

    前のエントリの続きです。 念を押しておきますが、このブログの「内容は個人の考えであって、所属組織とは方針が異なる」と考えてください。 さて、MySQL 8.0.xの単スレッド性能がどんどん遅くなってきた要因は幾つかありそうなので切り分けていきたいと思います。 まずは、数年前のエントリ「やはりC++はCよりも遅い?」の影響をできるだけ正確に見積もりたいところです。実行バイナリの最適化レベルを合わせて比較して初めて、ロジックの劣化が判るわけです。コンパイラのオプションの範疇でできるだけ最大の最適化を行って計測したいところです。いくつか試した結果、clangのPGO+LTO が手軽な中では最も効果があったのでそれで同じ計測をしてみましょう。(GCCのPGO+LTO と clangのPGOのみ はこれよりも少し劣ったのでとりあえず。) (補足) PGO は、一旦ターゲットとなる処理をプロファイリン

  • 医薬品検索でMySQLの全文検索機能を使った話 - KAKEHASHI Tech Blog

    AI在庫管理の開発チームでバックエンドエンジニアをしている沖です。今回は、AI在庫管理の医薬品検索において、MySQLの全文検索機能を使った話を紹介しようと思います。 この記事は秋の技術特集 2024の 8 記事目です。 今までの医薬品検索では満足できないユーザーがいた なぜMySQLの全文検索機能を採用したのか 全文検索機能を導入する 全文検索インデックスを付与したテーブルを作成する パーサー 照合順序と正規化 全文検索インデックスを使用して検索する データを最適な状態に保つために おわりに 今までの医薬品検索では満足できないユーザーがいた AI在庫管理には、医薬品の在庫一覧画面など、医薬品名で絞り込む画面がたくさんあります。この絞り込み機能を実現するために、これまではSQLのLIKE検索を利用していました。 LIKE検索は、使い慣れたSQLを用いて部分一致検索を実現できる便利な方法です

    医薬品検索でMySQLの全文検索機能を使った話 - KAKEHASHI Tech Blog
  • MySQLを使っても会社は潰れない

    MySQLを使っても会社は潰れない そんな話は聞いたことがない。AWS Lambdaが再帰実行されて潰れた会社の話は実際に聞いたことがあるが。 つい先日、私が書いた記事がとんでもなく大事になってしまい、大変な賛否を巻き起こした。 まさかこんなに読まれると思っていなかったので、大変驚いたのと同時にインターネッツの恐ろしさを体感した。 その中でも特に物議を醸したのが「MySQLを使うと会社が潰れる」というフレーズだった。 「MySQLを使うと会社が潰れる」とはなんだったのか 私がこのフレーズを選んだ理由は、言うまでもなく単に読者の注意を引く表現を使いたかったからである。 このフレーズがセクションの先頭にあったら、「なにをいってるんだこいつ?」と先を読んでみようという気になると思った。 そして続きを読んでいくと「なんだそういうことか」と意図を汲んで、それで同意するかしないかは人それぞれだろうなと

    MySQLを使っても会社は潰れない
  • CLOVER🍀

    これは、なにをしたくて書いたもの? TiDBのアーキテクチャーをざっくりと把握しようという、このあたりの続きです。 ※最初のエントリーがこのシリーズのインデックスページにもなっています TiDBのアーキテクチャーをざっくりと眺めてみる(全体概要、ストレージ概要まで) - CLOVER🍀 TiDBのアーキテクチャーをざっくりと眺めてみる(コンピューティング概要) - CLOVER🍀 TiDBのアーキテクチャーをざっくりと眺めてみる(ストレージエンジン概要:TiKV編) - CLOVER🍀 今回扱うのは、ストレージエンジンのひとつであるTiFlashです。 TiFlash Overview | TiDB Docs TiFlash TiFlashについて書かれたページはこちら。 TiFlash Overview | TiDB Docs TiFlashはTiDB質的にトランザクション処理

    CLOVER🍀
  • 第223回  MySQL Shellをいろいろな環境にインストールしよう | gihyo.jp

    今回は、今まで紹介してきたMySQL ShellをWindowsmacOSLinux(Ubuntu、OracleLinux)にインストールしてみようと思います。今まではDockerコンテナ内にあるMySQL Shellを活用していましたが、今回はローカル環境にインストールする方法を紹介します。 この記事は2024年6月時点のものとなりますので、最新情報が必要な場合は、必ず公式のドキュメントを確認してください。 検証環境 今回はMySQL環境として、Dockerで建てたMySQLを使用します。以下のコマンドでDockerを建てて、ローカルからアクセスをします。 % docker run --platform linux/x86_64 -p 127.0.0.1:3307:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw -e MYSQL_USER=kk217

    第223回  MySQL Shellをいろいろな環境にインストールしよう | gihyo.jp
  • こんなに違うよ MySQLとPostgreSQL /

    2024年6月22日に開催された「第14回 関西DB勉強会 」での、 『こんなに違うよ MySQLとPostgreSQLMySQLとPostgreSQLのニッチな違いを語る~』 の発表資料です。 https://kansaidbstudy.connpass.com/event/316348/

    こんなに違うよ MySQLとPostgreSQL /
  • MySQL8.0でSELECT COUNT(*)が低速になる動作は8.0.37で解消されていた! - CyberAgent SRG #ca_srg

    メディア統括部 サービスリライアビリティグループ(SRG)の鬼海雄太(@fat47)です。 #SRG(Service Reliability Group)は、主に弊社メディアサービスのインフラ周りを横断的にサポートしており、既存サービスの改善や新規立ち上げ、OSS貢献などを行っているグループです。 記事は、MySQ

    MySQL8.0でSELECT COUNT(*)が低速になる動作は8.0.37で解消されていた! - CyberAgent SRG #ca_srg
  • MySQL/Aurora/TiDBロック入門 – 第1回トランザクション分離レベル|技術ブログ|北海道札幌市・宮城県仙台市のVR・ゲーム・システム開発 インフィニットループ

    MySQL/Aurora/TiDBロック入門 – 第1回トランザクション分離レベル MySQL InnoDB および AWS Aurora や PingCAP TiDB におけるロックの仕組みやトランザクションの動作を全11回のシリーズで解説します! 最初はベースとして重要な MySQL 8.0 InnoDB 前提でユーザー視点でのロックの仕組みを学び、後半第10回以降では MySQL 互換 DB として人気の高い AWS Aurora や PingCAP TiDBMySQL InnoDB との違いについて学びます。 1回目の今回はロック機構と切っても切り離せないトランザクションとその分離レベルについて、実際に挙動を確かめながら解説します。ライブ感のある説明も理解に役立ちますので、解説動画も付けてみました。合わせてご覧ください! ★ 第1回 トランザクション分離レベル ★ 第2回 ロ

    MySQL/Aurora/TiDBロック入門 – 第1回トランザクション分離レベル|技術ブログ|北海道札幌市・宮城県仙台市のVR・ゲーム・システム開発 インフィニットループ
  • MySQLで処理するGIS ~地球が丸いことを覚えたMySQL~ / MySQL GIS FOSS4G TOKAI 2023

    2023年8月26日(土)に開催されたFOSS4G TOKAI 2023での発表資料です。 法務省登記所備付地図データをMySQLに取り込んでから検索し、空間インデックスにより検索処理を高速化した結果も紹介しています。

    MySQLで処理するGIS ~地球が丸いことを覚えたMySQL~ / MySQL GIS FOSS4G TOKAI 2023
  • PostGISとMySQL8のGIS機能の違い - Qiita

    記事はPostgreSQL Advent Calendar 2019の7日目となります。 はじめに 私は普段PostGISを使っていますが、最近MySQL 8.0.xのGIS機能について調査する機会がありました。 記事は筆者が調査の中で気づいた両者の違いをまとめたものです。 PostGISは2.x〜3.x、MySQLは8.0.17を対象としています。 両者は共にOpenGIS1やSQL/MMなどの標準に基づく実装を進めているため共通している部分も多いものの、独自拡張や実装の違いによりいくつかの違いもあります。 記事の目的は両者の優劣をつけることではありません。 両者の違いを理解して、場面に応じた適切な使い方を選択するための一助となることが目的です。 所感 文に入る前に、私の所感を述べておきたいと思います。 まず、普段PostGISを使っている人が、MySQLGIS機能に乗り換える

    PostGISとMySQL8のGIS機能の違い - Qiita
  • MySQL 8.4 LTS登場!!

    記事を書くのが遅くなってしまったが、先日MySQL 8.4シリーズが登場したので紹介をしておこうと思う。新機能の解説については機会を改めて書くとして、今回は主にアップグレードにまつわる重要なポイントを書き記しておく。 LTS = Long Term Support 以前の記事でも紹介した通り、MySQL 8.4はLTS = Long Term Supportのバージョンとなっている。長期間サポートするために互換性を最大限保証するバージョンである。前のメジャーバージョンであるMySQL 8.0シリーズのように、シリーズの途中で互換性が破壊されるような変更が入ることは基的に無い。「バグ修正のためにどうしても仕様を変えなければならない」というような事態が生じる可能性はゼロではない。なので絶対に互換性が保たれるとは言い切れないところであるが、基的には仕様変更はない方向で今後リリースされていくこ

    MySQL 8.4 LTS登場!!
  • Aurora MySQLのメモリ不足の原因を特定する

    シンプルフォーム株式会社で SRE をしている守屋です。 記事では Aurora MySQL の OOM(メモリ不足)エラーについて、原因となるクエリを特定するために役立つ Tips を弊社での実例を交えてご紹介します。 発端 突如 Slack に鳴り響く不吉な通知。 「パターン青!障害です!!」 どうやら番環境の Aurora クラスターがフェイルオーバーしてアプリケーションが DB コネクションエラーを引き起こした模様です。幸いインスタンスは冗長化していて Aurora のフェイルオーバーは高速であるため、ユーザー目線では瞬断が発生した程度の比較的影響が小さめな障害に留まりました。しかし SRE としては捨ておけない状況です!早速原因の調査を始めました。 フェイルオーバーの原因 結論から言うとメモリ使用量がスパイクして OOM エラーが発生したことが原因でした。根拠としては Aur

    Aurora MySQLのメモリ不足の原因を特定する
  • クエリのパフォーマンスチューニングの第一歩。実行計画や統計情報について入門する

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

    クエリのパフォーマンスチューニングの第一歩。実行計画や統計情報について入門する
  • Postgres と MySQL における id, created_at, updated_at に関するベストプラクティス

    読者対象 ある程度データベースに関する知識を持っている,経験年数 1 年以上のバックエンドエンジニア 特定のプログラミング言語に依存する部分は含めないため,すべての SQL 使用者を対象とする また,ゼロからの丁寧な説明というよりは,リファレンス感覚で使える記事という形にまとめる。 RDBMS の対象バージョン PostgreSQL: 9.4 以降 MySQL: 8.0.28 以降 id (データ型と INSERT 時のデフォルト埋め) 導入 一般的に採用されやすいプライマリキー用の値として,以下を考える。 連番整数 MySQL では AUTO_INCREMENT, Postgres では IDENTITY や SERIAL と呼ばれるもの UUID v1: ハードウェアごとにユニークな単調増加値 UUID v4: ランダム値 UUID v7(ドラフト): 単調増加であるタイムスタンプとラ

    Postgres と MySQL における id, created_at, updated_at に関するベストプラクティス
  • MySQLのSQLクエリチューニングの要所を掴む勉強会を開催しました! - ANDPAD Tech Blog

    こんにちは!DBREの福間(fkm_y)です。先月、弊社でデータベースの技術顧問をして頂いてる三谷(mita2)さんに開発部向けの「MySQL SQLチューニング」勉強会を実施していただきました。 今回はMySQLの得意不得意なことの説明やSQLチューニングの流れ、具体的な事例を元にした対応例、また最近話題のHTAPな製品も紹介していただきとても参考になったのでポイントをおさえてレポートをお伝えします! 開催背景 MySQL の得意なこと、苦手なこと データベースのチューニング手段と特徴 SQLチューニングの流れ インデックス SQLチューニング例 インデックスフルスキャンとカバーリングインデックス ソート まとめ 当日の資料 さいごに 過去開催されたデータベース勉強会レポート 開催背景 弊社では三谷さんによるデータベース勉強会を定期的に開催しています。数年前にも同じテーマで勉強会

    MySQLのSQLクエリチューニングの要所を掴む勉強会を開催しました! - ANDPAD Tech Blog
  • 「開発者向けの MySQL 入門」という勉強会をしました - しなしな記録

    今、自分が所属している会社では、いわゆるフルサイクルなアプリケーションエンジニアがほとんどで、SRE のような、システムを運用改善することを専門にするメンバーは居ません。一方でそれなりにプロダクトの数は多く、各種ミドルウェアの運用で困っているのを見かけることがあります。 色々な人が似た問題に悩むのはもったいないので、「MySQL を運用したことがある人からすると、こういう考え方をする」という風な目線で勉強会を行いました。せっかくなので社内の情報を抜いたうえで公開します(同じようなことを色々な場所で言っていて、その都度作り直しているから……というのもあります)。 speakerdeck.com ちなみに DB のどこで悩むかはだいぶ業界ドメインに左右されると思っています(それはそう)。ゲーム業界なんかは、激しくスパイクするワークロードな上にミスったときの機会損失が激しいので、シャーディングを

    「開発者向けの MySQL 入門」という勉強会をしました - しなしな記録
  • MySQLで業務アプリを作る際に気を付けたいJOINの話 - Qiita

    動機の供述 自分の好きなDB分野の話で、基的ではあるけれど重要な知識が 若手エンジニアの間などであまり共有されていないのを見てきた。 Qiitaに次に何を投稿しようかと思ったとき、いいねも欲しいのでそんな需要のありそうな記事を書こうと思った。 MySQLの特性について オープン系システム開発において、RDBの選定にMySQLが採用されることは多いのではないでしょうか。 同じOSSのRDBでPostgresという選択肢があると思いますが、 業務実績があるから、社内のエンジニアが慣れているからといった理由で無条件にMySQLが選ばれることがあるかもしれません。 実際のところ私もMySQLの方が慣れてます。 しかし題記のようにMySQLを使う際は、その特性を把握しておかないと思わぬ事故の元になることがあります。 SELECT, UPDATEなど、基的な処理はPostgresよりも性能が高いも

    MySQLで業務アプリを作る際に気を付けたいJOINの話 - Qiita
  • Aurora MySQL におけるロック競合(ブロッキング)の原因を事後調査できる仕組みを作った話

    こんにちは。 DBRE チーム所属の @p2sk です。 DBRE(Database Reliability Engineering)チームでは、横断組織としてデータベースに関する課題解決や、組織のアジリティとガバナンスのバランスを取るためのプラットフォーム開発などを行なっております。DBRE は比較的新しい概念で、DBRE という組織がある会社も少なく、あったとしても取り組んでいる内容や考え方が異なるような、発展途上の非常に面白い領域です。 弊社における DBRE チーム発足の背景やチームの役割については「KTC における DBRE の必要性」というテックブログをご覧ください。 記事では、Aurora MySQL でロック競合(ブロッキング)起因のタイムアウトエラーが発生した際に根原因を特定することができなかったので、原因を後追いするために必要な情報を定期的に収集する仕組みを構築した

  • MySQL(InnoDB)のSQLパフォーマンスチューニングのエッセンス

    はじめに MySQL(InnoDB)でSQLのパフォーマンスチューニングをするときに役に立つ知識をエッセンスとしてまとめました。結合(JOIN)やB-treeインデックスの探索の仕組み、実行計画の基的な見方を紹介します。 想定する読者は、SQLのパフォーマンスを改善する必要があるが実行計画をみてもいまいちピンと来ない方です。インデックスの作成の経験や、複合インデックスやカーディナリティの知識があることを前提にしています。目標は、実行計画の内容がよく分からない読者が、実行計画をみただけでクエリが実行される様子をイメージでき、自信を持ってクエリの改善にあたることができるようにすることです。 ストレージエンジンはInnoDBを前提としています。また、インデックスはB-treeインデックスを想定しています。全文検索の転置インデックスや空間検索のR-treeインデックスについては触れません。 イン

    MySQL(InnoDB)のSQLパフォーマンスチューニングのエッセンス
  • MySQL カバリングインデックス - Qiita

    データが欲しい時に、より小さなコストでやろうと思ったら、 行全体を取得するよりも、インデックスのみで処理するようが良いに決まっている。 そこで、クエリを処理するのに必要なデータを全て含んでいるようなインデックスをカバリングインデックスと呼ぶ。 これは非常に有効な手段で、特にInnnoDBにおいては、セカンダリインデックスは、主キーの値をそのままリーフノードに格納するため、クエリをカバーするセカンダリインデックスによって、主キーでもう1つのインデックスルックアップを回避することができる。 カバリングインデックスが実行された時、EXPLAIN句のEXTRA列にUsing Indexが表示される。 それでは、これから、複合インデックスを用いてカバリングインデックスを活用することを考える。 Userのageとnameがの一覧が必要であれば、(age, name)の複合インデックスをUserテーブル

    MySQL カバリングインデックス - Qiita