並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 30 件 / 30件

新着順 人気順

mysqlの検索結果1 - 30 件 / 30件

  • サブクエリの書き方を2万文字弱かけてすべて解説する

    これはなに ども、レバテック開発部のもりたです。 今回はSQLのサブクエリについてまとめます。仕事でクエリを書く際、サブクエリは頻出の構文だと思うんですが、同時にサブクエリの書き方を完全に理解しているよという人は案外少ないのではないでしょうか?[1] 実際、MySQLの公式ドキュメントを見ると12ページくらいを割かれており、意外と奥深いのがサブクエリです。使いこなせると便利ですし、何よりちょっとSQLのコツみたいなのがわかって面白いよ、ということで記事にしてみました。 前提 この記事は以下の前提を含んでいます。 環境 MySQL8.0系 読者の知識 なんとなくサブクエリが書ける けど相関サブクエリとかになると「あーっ」つってGoogle meetを閉じてしまうくらいのレベル感 記事のボリューム 18,000文字 おれの卒論が20,000文字だった マサカリ 間違ってたら投げてくれ〜〜 それ

      サブクエリの書き方を2万文字弱かけてすべて解説する
    • MySQLのSQLクエリチューニングの要所を掴む勉強会を開催しました! - ANDPAD Tech Blog

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

        MySQLのSQLクエリチューニングの要所を掴む勉強会を開催しました! - ANDPAD Tech Blog
      • クエリのパフォーマンスチューニングの第一歩。実行計画や統計情報について入門する

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

          クエリのパフォーマンスチューニングの第一歩。実行計画や統計情報について入門する
        • 大規模サービスのインフラを全面的にリプレイスした話 - Qiita

          はじめに こんにちは。雑食系エンジニアの勝又です。 今回は、私が2年ほど参画させていただいた大規模サービスのインフラやDevOps周りを全面的にリプレイスしたお話について簡単にご紹介させていただきます。(内容に関しては事前に参画先企業様に確認していただいております) サービス概要 詳細な内容は伏せますが、メインとなるテーブルのレコード数が数十億件、スパイク時には数万〜数十万のユーザーが一斉にアクセスする大規模サービスです。 技術的負債 長く運用されてきたサービスのあるあるですが、新機能の追加が最優先されてきたことにより、こちらのサービスにも下記のような技術的負債が大量に積み上がっていました。 RubyやRailsやMySQLのバージョンがかなり古い インフラの構成がコードではなくドキュメントで管理されている アプリケーションの構成管理がおこなわれていない CI/CDパイプラインが構築されて

            大規模サービスのインフラを全面的にリプレイスした話 - Qiita
          • Aurora MySQLのメモリ不足の原因を特定する

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

              Aurora MySQLのメモリ不足の原因を特定する
            • Amazon RDS ブルー/グリーンデプロイを利用してMySQLのアップグレードをした話 - Pepabo Tech Portal

              こんにちは。技術部プラットフォームグループのharukinです。 この記事では、私たちが提供するネットショップ作成・運用のためのECプラットフォーム「カラーミーショップ」のデータベースを、Amazon RDSのブルー/グリーンデプロイを利用し、MySQLのバージョン5.7.38から8.0.35へアップグレードした経験についてご紹介します。カラーミーショップにおいてはこれが初の試みでした。Amazon RDS固有のファーストタッチレイテンシーの解除方法や、ダウンタイム時間の計測についてもお伝えします。 Amazon RDSのブルー/グリーンデプロイを活用するメリットは、本番環境に準ずるステージング環境を構築し事前検証が可能であることです。ステージング環境は約1分で本番環境に昇格させることができ、昇格時に許容ダウンタイムを超えたり、レプリケーションやインスタンスの問題が生じた場合は、自動的にプ

                Amazon RDS ブルー/グリーンデプロイを利用してMySQLのアップグレードをした話 - Pepabo Tech Portal
              • pytest でテストケース毎に DB を自動的に初期化して、テスト開発体験を向上させる - SalesNow Tech Blog

                概要 Web バックエンドのテストコードを書く場合、その多くは DB に依存していることが多いです。 DB 関連のテストは、テストデータの準備やテストケース毎の DB 処理化を適切に行うことが重要ですが、手間がかかる場合あるため、Mock で擬似的にテストしてしまうことも多いかと思います。 ただ、Mock を使ったテストは本質的な問題を検知できない意味のないテストになってしまう可能性があり、可能な限り DB の Mock を行わずに、実際の DB を使用してテストすることが望ましいと考えています。 本記事では、pytest、sqlalchemy、PostgreSQL を使った場合に、テストケース毎に DB を簡単に初期化しつつ、テストケース毎の前提データ登録も簡単うことでテスト開発体験を向上させる方法を紹介します。 前提環境 本記事では、以下の環境を前提として説明いたします。 python

                  pytest でテストケース毎に DB を自動的に初期化して、テスト開発体験を向上させる - SalesNow Tech Blog
                • 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登場!!
                  • note の Aurora MySQL を v2 から v3 へアップグレードしました|tic40

                    note ではメインデータベースとして Aurora MySQL を採用し、日々発生する膨大なトラフィックを処理しています。Aurora MySQL v2 (MySQL 5.7 互換) の標準サポートは2024/10/31 に終了するため、これを機に v3 (MySQL 8.0 互換) へのアップグレードを行いました。 アップグレードは無事に完了しましたが、いくつかの問題にも直面しました。これらを共有することで、これからアップグレードを検討している方へ参考になればと思います。 事前に検討した課題アップグレード後に致命的な問題が起きたらどうするかv3 へのアップグレード後に v2 へ切り戻すことは容易ではなく、スナップショットなどからの復元が必要になります。データをロールバックすることになるため、ユーザ影響が極めて大きく避けたい事態です。 そのため、基本的に切り戻しはできないという前提でアッ

                      note の Aurora MySQL を v2 から v3 へアップグレードしました|tic40
                    • GitHub - HexaCluster/pgdsat: PostgreSQL Database Security Assessment Tool

                      PGDSAT is a security assessment tool that checks around 70 PostgreSQL security controls of your PostgreSQL clusters including all recommendations from the CIS compliance benchmark but not only. This tool is a single command that must be run on the PostgreSQL server to collect all necessaries system and PostgreSQL information to compute a security assessment report. A report consist in a summary of

                        GitHub - HexaCluster/pgdsat: PostgreSQL Database Security Assessment Tool
                      • Athena で S3 と MySQL を JOIN する | DevelopersIO

                        CDK の中で DB を初期化する点についても後ほど触れます。 S3 にサンプルデータをアップロードする 続いて、以下のコマンドで S3 にサンプルのデータを入れます。 bucket_name=$(aws cloudformation describe-stacks --stack-name BlogAthenaJoinS3AndMysqlStack --output text --query 'Stacks[0].Outputs[?OutputKey==`BucketName`].OutputValue') aws s3 cp ./s3_test_data/data "s3://${bucket_name}/data" --recursive これで CloudFormation で作成した S3 バケット名を取得し、そのバケットに以下の CSV ファイルをアップロードしました。 ※4都

                          Athena で S3 と MySQL を JOIN する | DevelopersIO
                        • PostgreSQL supported platforms over time

                          The recent discussion about AIX support in PostgreSQL (as of now removed in PostgreSQL 17) led me to look through the project’s history, to learn what platforms we have supported when. In this context, “platform” really means operating system. One useful proxy is looking at the files in src/template/, because every supported platform needs to be listed there. There are other dimensions, such as wh

                          • Why SELECT COUNT(*) FROM TABLE Is Sometimes Very Slow in MySQL or MariaDB

                            If you have enough experience with MySQL, it is very possible that you stumbled upon an unusually slow SELECT COUNT(*) FROM TABLE; query execution, at least occasionally. Recently, I had a chance to investigate some of these cases closer, and it stunned me what huge differences there can be depending on the circumstance given the very same table. As the problem turned out to be much more complex t

                              Why SELECT COUNT(*) FROM TABLE Is Sometimes Very Slow in MySQL or MariaDB
                            • Ten years of improvements in PostgreSQL's optimizer · Ryan Marcus

                              As a query optimization researcher, I’ve spent the last 10 years of my life playing with, learning from, and building on top of the most sophisticated open source query optimizer out there, PostgreSQL. I recently wondered how much PostgreSQL had improved over the decade since I started working on databases. While changelogs and opinion pieces were plentiful, I couldn’t find any strong empirical co

                              • MySQL の SQL クエリチューニングの要所を掴む勉強会

                                データベース 技術顧問 @mita2 FYI: MySQL の SQL クエリチューニングの要所を掴む勉強会を開催しました! - ANDPAD Tech Blog

                                  MySQL の SQL クエリチューニングの要所を掴む勉強会
                                • 生成AI (Cohere)+LangChain+Vector Database (PostgreSQL)でRAGを試してみた - Qiita

                                  生成AI (Cohere)+LangChain+Vector Database (PostgreSQL)でRAGを試してみたPostgreSQLlangchainLLMVectorStorepgvector 生成AIを企業が使う場合、社内データを使った回答を得るにはファインチューニング、もしくは Retrieval-Augmented Generation (RAG、検索拡張生成) を行う必要があります。 企業では毎日データが更新される中で、ファインチューニングを頻繁に行うのはコスト高で現実的ではありません。 そこでRAGを使った方法が注目されています。 ということで、今回は以下の組み合わせでRAGを試してみました。 生成AI: Cohere Command Vector Database: PostgreSQL (pgvector) 生成AIとVector Databaseの連携: La

                                    生成AI (Cohere)+LangChain+Vector Database (PostgreSQL)でRAGを試してみた - Qiita
                                  • Exploring the Enigma of Database Vacuuming

                                    Before we discuss what VACUUM does and its implications, we need to understand how data is actually stored on disk. What happens when a tuple is inserted, updated, or deleted? Understanding this will help us understand what VACUUM does, why it’s needed, and its implications. We will primarily focus on Postgres, as it’s one of the most widely used open-source databases. Different databases might ha

                                      Exploring the Enigma of Database Vacuuming
                                    • RAG With PostgreSQL - pgDash

                                      Retrieval-Augmented Generation with Postgres, pgvector, ollama, Llama3 and Go. With a Retrieval-Augmented Generation (RAG) system, you can create an AI assistant that can answer questions based on the information contained within your existing, in-house knowledge bases like wikis, manuals, training and reference material. Read on to see how you can build your own RAG using PostgreSQL, pgvector, ol

                                      • [PostgreSQL]pg_dumpとpg_restoreを用いたバックアップとリストア - Qiita

                                        ※1…バックアップ時に選択した対象を全てリストアする ※2…TOC=Table Of Contents。そのバックアップファイルにどのようなデータが格納されているかを一覧形式で確認したり、一覧から選んだデータだけリストアできる。 ※3…SQLに変換してから行う。変換時に標準SQLオプションを指定する事ができる為、平文形式より柔軟性が高い。 目的別コマンドサンプル一覧 この記事で紹介されている目的別のコマンドラインサンプルを一覧でまとめます。 コマンドライン中の -h YOUR_HOST -p YOUR_PORT -U YOUR_USERのDB接続情報オプションは省略しています。-dオプションが付いている場合、これらも必要に応じてオプションに追加して下さい。 カスタム形式のダンプデータを扱う場合(お勧め) 目的 コマンドラインサンプル

                                          [PostgreSQL]pg_dumpとpg_restoreを用いたバックアップとリストア - Qiita
                                        • Monitor query plans for Amazon Aurora PostgreSQL | Amazon Web Services

                                          AWS Database Blog Monitor query plans for Amazon Aurora PostgreSQL As we continue to innovate and add new features on behalf of our customers, you can now maintain and manage query plans in Amazon Aurora PostgreSQL-Compatible Edition. This feature enables you to identify the query plans contributing to the current database load and track the performance statistics of query plans over time. In this

                                            Monitor query plans for Amazon Aurora PostgreSQL | Amazon Web Services
                                          • pgvectorの紹介

                                            pgvector(pgvector/pgvector: Open-source vector similarity search for Postgres)はベクトルデータの類似性検索機能を提供するPostgreSQLの拡張機能です。データベース内にベクトルデータを格納し、特定のベクトルと最も近い要素を検索できます。近似値の算出はユークリッド距離、内積、コサイン距離による距離計算が提供されており、大規模なデータセットでの検索を高速化するためのインデックス機能も提供されています。レコメンデーションシステムや画像や文章の類似コンテンツ検索などのアプリケーション開発で有用になります。 pgvectorのインストールとセットアップ PostgreSQLにpgvectorをインストールします。OSはRocky Linux release 9.6、PostgreSQLは公式リポジトリからインストールし

                                              pgvectorの紹介
                                            • Reddit、"AWS S3"やその他のシステムからメディアメタデータを"AWS Aurora Postgres"に移行

                                              Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。この本では、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

                                                Reddit、"AWS S3"やその他のシステムからメディアメタデータを"AWS Aurora Postgres"に移行
                                              • ラズパイへMariaDBをインストール&セットアップする手順 | ラズパイダ

                                                rootパスワードなど初期設定をする 記事執筆時点だと、ウィザード形式で設定していくツールがあります。 10.5.2から始まるMariaDB MariaDB 10.5.2から、mysql_secure_installationはシンボリックリンクであり、mariadb-secure-installationはバイナリ名です。 mysql_secure_installation - MariaDB Knowledge Base Unixソケット認証を使わない 少しややこしいのですが、Unixソケット認証は使わない方法で使います。 MariaDB 10.4から変更になったunix_socket MariaDB 10.4では、Unixソケット認証がデフォルトで適用され、通常はルートパスワードを作成する必要はありません。 Unixソケット認証だと、Linux側(今回だとRaspberry Pi O

                                                  ラズパイへMariaDBをインストール&セットアップする手順 | ラズパイダ
                                                • PostgreSQLのトリガー関数のBEFORE・AFTERの細かな挙動の違い - Qiita

                                                  OSS-DB Silverの資格勉強の際、トリガーのBEFOREとAFTERに関する問題があり、いまいち違いがわからなかったため、トリガーのBEFORE・AFTERに関して試した内容をまとめます。 気になった点 productテーブルの変更をトリガーとして、product_log()関数(後述)が呼び出されるように設定した時、「トリガーの定義がBEFOREの場合、テーブルproductのカラムidの値は新しい値から-10されたものになる」という選択肢が正しいとされており、以下の点が気になりました。 AFTERの場合にはproductのidの値はどうなるのか product_logに挿入される値にBEFORE・AFTERは影響を与えるか(OLD・NEWの値に影響を与えるか) product_log()関数の戻り値はどのように扱われるのか よってこれらを以下で確認していきます。 実験準備 問題

                                                    PostgreSQLのトリガー関数のBEFORE・AFTERの細かな挙動の違い - Qiita
                                                  • MySQL :: MySQL Shell 8.0 :: 8.1 アップグレードチェッカユーティリティ

                                                    util.checkForServerUpgrade() 関数は、MySQL サーバーインスタンスのアップグレード準備ができているかどうかを確認できるアップグレードチェッカユーティリティです。 MySQL Shell 8.0.13 から、最初の MySQL Server 8.0 General Availability (GA) リリース (8.0.11) から現在の MySQL Shell リリース番号と一致する MySQL Server リリース番号まで、アップグレード先のターゲット MySQL Server リリースを選択できます。 アップグレードチェッカユーティリティは、指定されたターゲットリリースに関連する自動チェックを実行し、手動で行う必要がある関連チェックをさらにアドバイスします。 アップグレードチェッカユーティリティを使用して、MySQL 5.7 サーバーインスタンスの互換

                                                    • 【MySQL】読み取り専用トランザクションもmetadata lockを取る - 地方エンジニアの学習日記

                                                      dev.mysql.com BEGINなどをせずにSELECTを実行しただけでも読み取り専用トランザクションというのが開始されるらしい。スロークエリが実行されているテーブルに対してDDLを実行するとmetadata lockが取られて以降のDMLが全てブロックされる問題があるがBEGINとかしてない場合は問題ないのでは?と思ったので調べてみた。 TrxA > SELECT SLEEP(3600) from HOGE; とやってHOGEに対してDDLを発行すると3600sの間DDLは待たされ以降のDMLを全て待たされる。読み取り専用トランザクション中にALTERが実行されるとトランザクションの分離を実現できなくなるので考えてみればそれはそうという感じである。 実験してみる こんなテーブルにALTER TABLEを実行してみる mysql> desc test_table; +--------

                                                        【MySQL】読み取り専用トランザクションもmetadata lockを取る - 地方エンジニアの学習日記
                                                      • MacのDockerでApache+MySQL+PHPの開発環境構築

                                                        Dockerを使ってMac上にLAMP(Linux + Apache + MySQL + PHP)環境を構築する方法を解説します。 Dockerのインストールがまだの方はこちらをご覧ください。 あわせて読みたい MacにDocker Desktopをインストールする手順 Macにおける開発環境の構築方法のひとつであるDockerをインストールする手順を解説しまーす。 環境 Mac mini (M1, 2020) macOS Sonoma 14.2.1 【Dockerのインストール】… 環境 Mac min (M1, 2020) macOS Sonoma 14.2.1 Docker Desktop 4.27.1 インストールするもの PHP 8.3 Apache 2.4.57 MySQL 8.3 phpMyAdmin 最新版 Docker Composeを使う 今回は、複数のコンテナをまとめ

                                                          MacのDockerでApache+MySQL+PHPの開発環境構築
                                                        • Amazon Aurora MySQL5.7のサポート期限が迫ってきたのでMySQL8に移行した話

                                                          こんにちは、アルダグラムのSREエンジニアの okenak です 弊社のサービスのDBにAmazon Auroraを利用していますが、MySQL5.7の標準サポートが2024年10月31日までであるため、MySQL8の移行を実施しました。(サポート期限について) 今回は移行に伴い調査したことや対応手順、実際に起きた問題について紹介したいと思います。 Aurora MySQL8のアップグレード内容の調査 MySQL5.7からMySQL8の移行だったので、公式ガイドを見て機能差分の調査を行いました MySQL :: MySQL 8.0 リファレンスマニュアル :: 2.11 MySQL のアップグレード Amazon Aurora MySQL DB クラスターのメジャーバージョンのアップグレード - Amazon Aurora ドキュメントを一通り読んだところ気になったポイントは以下の部分でし

                                                            Amazon Aurora MySQL5.7のサポート期限が迫ってきたのでMySQL8に移行した話
                                                          • DjangoのマイグレーションとMySQL 5.6~でのオンラインDDLの副作用について - クロスマート Tech Blog

                                                            まえがき ちょっと待った。オンラインDDLって何よ? DDLについて オンラインDDL オンラインDDL実行で起こりかけた問題 ロックを取得する じゃあどうすればいいのさ DDLを流す時にメンテを入れる TO値を設定する あとがき まえがき こんにちは。バックエンドエンジニアの@mobojisan と申します。 この時期は本当にカンファレンスが多いですね! 個人用GitHub上にSSGを利用したブログ基盤があるのですが、それが使いにくかったので、今流行りのsupabaseでブログ基盤をおっ立て、カンファレンスに参加した時の感想記事でも載っけようかと画策していました。 しかし、作業がカンファレンスの開催スピードにとても追いつかず、カンファレンスのメモが無情にもnotion上に溜まっていきます。 もはやメモをブログとして世に出す頃には来年のカンファレンスが開催されているんじゃないか…?と思いな

                                                              DjangoのマイグレーションとMySQL 5.6~でのオンラインDDLの副作用について - クロスマート Tech Blog
                                                            • MySQLの文字コード(characterset)と照合順序(collation)についてとその設定 - Qiita

                                                              株式会社TECH LUCKという会社で代表兼エンジニアをしている齊藤です。 開発している際にMySQLの文字コード関連でエラーが出てきたので、いい機会だと思って調べたことをまとめました。 前提条件 macOS13.2.1(M1チップ) MySQL:8.0.32 また記事の後半で、AWSのRDSも出てきます。 文字コードと照合順序について MySQLは文字コードとソート順の2つの設定を持っています。ソート順の部分を照合順序と呼びます。 MySQL内で文字列を比較する際に、文字コードだけでなく照合順序が一致するかどうかも比較します。そのため、照合順序が合わないと比較できず、JOINしようとした際にエラーになってしまいます。 文字コード(characterset)は、MySQL内ではutf8mb4, utf8, cp932などで表されています。 文字コードは、MySQLクライアント(接続元)の設

                                                                MySQLの文字コード(characterset)と照合順序(collation)についてとその設定 - Qiita
                                                              1