Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

概要 この記事では、MySQLでのSQLクエリのパフォーマンスを最大限に引き出すための効率的な書き方を解説します。アプリケーションの応答速度を向上させることは、ユーザーエクスペリエンスの大幅な改善に直結します。この記事を通じて、初心者から中級者のデータベース管理者や開発者は、SQLクエリの基本から高度な最適化テクニックまで、幅広い知識を習得できることを目指しています。 MySQL 8.0での検証を基にしていますが、その他のバージョンでの動作は保証されません。この記事は継続的に更新されます。 主な内容 このセクションでは、検証データの作成手順を含め、インデックスの利用、JOIN操作の最適化、サブクエリとビューの利用、クエリキャッシュの活用など、効率的なクエリの書き方について解説します。 検証データの作成 MySQLサーバーへの接続方法から始め、テスト用データベースとテーブルの作成、ダミーデー
メジャーバージョンのアップグレード 商用環境への適用前に、いずれのアップグレードも徹底的にテストすること。 メジャーバージョンアップグレード中、必要に応じて RDS によって MySQL バイナリ mysql_upgrade が実行され、テーブルがアップグレードされます。 メジャーバージョンアップグレード中、RDS によって slow_log および general_log テーブルが空にされます。これらのログ情報を保持するには、メジャーバージョンアップグレードの前にログファイルの内容を保存する。 通常は約 10 分で完了するが、インスタンスタイプによる。 MySQL 5.7 から 8.0 へのアップグレードの事前チェック MySQL 8.0 には 5.7 との非互換性がいくつかある。 MySQL 5.7 から 8.0 へのアップグレードをスタートすると、RDS では、これらの非互換性を検
内容 RDS AuroraのMySQLのバージョンをAurora2(MySQL5.7) ⇒ Aurora3(MySQL8.0)にアップデートする際、先日のre:Invent 2022で発表された「RDSのBlue/Greenデプロイ」という新しい機能を使用してみました。 今回その手順と、詰まったポイントをまとめていきたいと思います。 添付画像の網掛けが多い点はご容赦ください。 目次 Blue/Greenデプロイの概要 手順 スナップショットを取得 Blue/Greenデプロイの作成 GreenのDBに変更を加える 変更を加えたgreenのdbをテスト GreenをBlueに切り替え 完了 後始末 トラブルシューティング Blue/Greenデプロイの概要 Blue/Greenデプロイとは 現在運用中の環境をBlueとして、レプリケーションしたステージング環境(Green環境)を用意します。
### テーブルを作る。 mysql> create table demo(id serial primary key, n integer not null); Query OK, 0 rows affected (0.02 sec) ### とりあえず3件データを挿入。 mysql> insert into demo(n) values(1); Query OK, 1 row affected (0.00 sec) mysql> insert into demo(n) values(2); Query OK, 1 row affected (0.00 sec) mysql> insert into demo(n) values(300); Query OK, 1 row affected (0.00 sec) ### 3桁 0埋め mysql> select lpad(n, 3, '0
はじめに 勤め先でもPHPを使っており自宅でPHPを勉強するために、ローカルでPHP開発環境を整えることにしました。 MAMP(マンプ)でも良いかなと思いましたが、せっかくなのでDockerで作ってみます。 (開発中に色々詰まってしまったところがあるので、備忘録がわりのメモです。) 手順 Dockerによる環境構築 ファイル・ディレクトリの準備 各ファイルの作成 コンテナを起動 サイトにアクセス 1. Dockerによる環境構築 Dockerを使うには、「Docker for Mac」のインストールが必要です。 Qitaに素敵な記事がたくさんあるので、ここでの説明は省略します。 今回はDockerで以下のコンテナを使います。 nginx PHP MySQL PHPMyAdmin 使用するコンテナが複数あるので、今回は「Docker Compose」を使って環境を作っていきます。 2. ディ
SELECT table_schema, sum(data_length) /1024/1024 AS mb FROM information_schema.tables GROUP BY table_schema ORDER BY sum(data_length+index_length) DESC; SELECT table_name, engine, table_rows AS tbl_rows, avg_row_length AS rlen, floor((data_length+index_length)/1024/1024) AS allmb, #総容量 floor((data_length)/1024/1024) AS dmb, #データ容量 floor((index_length)/1024/1024) AS imb #インデックス容量 FROM information_s
こんにちわ!OCEAN'Sの大庭です。 今回は、本番環境でRDSのスケールアップを行いましたのでその手順とログを紹介していきます 概要 まず、RDSがSingle-AZ構成のままスケールアップを行うと、 インスタンス停止 インスタンスタイプの変更(スケールアップ) インスタンス起動 となってしまい、DBサイズにもよるがサービスダウンタイムが10分弱はかかってしまいます。 そのため、今回は以下の方法でスケールアップを行います RDSをMulti-AZ構成に変更 RDSのスケールアップ プライマリにフェイルバック RDSをMulti−AZに変更 まず、RDSをMulti−AZ構成に変更する。 Multi-AZ構成への変更はダウンタイムが発生しませんが、 シングル AZ からマルチ AZ への変換時のダウンタイムを回避できますが、マルチ AZ への最初の変換時にパフォーマンスに大きな影響が出るこ
"Nested Loop Joinしか取り上げて無いのにタイトルが大きすぎないか" と指摘を頂いたので、タイトルを修正しました。Merge JoinとHash Joinのことはまた今度書こうと思います。 「JOINは遅い」とよく言われます。特にRDBを使い始めて間がない内にそういう言説に触れた結果「JOIN=悪」という認識で固定化されてしまっている人も多いように感じています。 たしかに、JOINを含むようなSELECT文は、含まないものに比べて重たくなる傾向があることは事実です。また、本質的に問い合わせたい内容が複雑で、対処することが難しいものも存在します。しかし、RDBの中で一体どういうことが起きているのかを知り、それに基いて対処すれば高速化できることも少なくないと考えています。 本稿では、JOINの内部動作を解説した上で、Webサービスを作っているとよく出てくるJOIN SQLを例題に
Pimcore Pimcore は Zend Framework と Ext JS などで作られたオープンソース CMS です。 高機能すぎて鼻血が出そうになるので注意。 デモサイト 以下より公式のデモサイトにログインできます。海外サイトのためか重く感じますが、ローカルにインストールすれば、管理画面は Ext JS なので軽快に動作するはずです。 https://www.pimcore.org/en/resources/try システム要件 Web サーバー Apache 2.2 以上 mod_rewrite .htaccess support (AllowOverride All) Nginx PHP 5.6 以上 mod_php と FCGI (FPM) の両方をサポート。 HHVM はテストされていないがうまく動くはず。 必須の設定、モジュール、拡張 memory_limit >=
6.メンテナンス## 新しいバージョンが出たときにMySQL を自動でアップグレードして自動で再起動してしまいます。 重要なウェブサイトやサービスで何の予告もなくデータベースに繋がらなくなったら大変ですので基本的に無効化しておきます。 参考:Amazon RDS DB インスタンスのメンテナンス 7.自動バックアップとスナップショット## その名の通り、自動でバックアップをしてくれる機能と手動でスナップショットをしてくれる機能がある。また、このスナップショットはリージョン間を移動することもできます。 なお、RDSのインスタンスを削除した際に、自動でスナップショットをとった場合は自動でスナップショットが削除されますが、手動でスナップショットを作成した場合は自分で削除する必要があります。 Single-AZ DB の場合は、スナップショット取得時はI/Oが短期間停止します。マルチ AZ DB
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? PHP7に対応したローカル開発環境を作りたい 同一のPC上にXAMPPのv5.6.24(PHP5.6.24)のローカル開発環境とは別に、PHP7に対応したXAMPP環境を作りたい -今後、別のバージョンのXAMPPをインストールすることを見越してzip版にする -本投稿の設定方法では、バージョンの異なるXAMPPを同時に起動しないことを前提とする 構築環境 OS:Windows10 64bit CPU:Corei3 メモリ:8GB 構築するWEB開発環境:XAMPP7.0.9ポータブル版32bit(XAMPPは64it版がない) XAM
更新のお知らせ 「その2」ができました。 「その1」を読んでいただいたあとに、こちらもご覧ください。 https://zenn.dev/maxima/articles/a23a9eda0cd3ae はじめに Hamee Advent Calendar 1日目ということで、実用的なSQL、バルクアップデートをご紹介したいと思います! バルクアップデートとは、1文のSQLで複数のレコードを一気に更新してしまうUPDATE文のことです。 バルクインサートはよく聞くけど、バルクアップデートは出来ないのかと疑問に思ったことはないですか? (バルクインサートについてそもそもご存じない方はこちらの記事がシンプルで分かりやすいかと思います) 結論から言いますと、バルクアップデートは可能です。しかし、バルクインサートほど気の利いた構文があるわけではありません。 これから何種類かご紹介しますが、ここに書かれて
何が起きたのか 作成していたアプリではサーバレス構成にてLambdaからRDS(MySQL)を呼び出していました。 リクエストが増えるとRDSのコネクション数が増加して すぐにDBコネクションエラーになってしまいました。 最大コネクションの上限値 結論から言うとLambdaとRDS(MySQL)は相性が良くないです。 理由はLambdaからRDSのDBコネクションを貼ると リクエスト単位でコネクションを張ってしまうため 仕組み上、同時接続に耐えられません (RDSのコネクション上限数が少ない) さらにVPC設定すると・・・ セキュリティのため、RDSをLambdaからのみアクセスさせるためには LambdaとRDSを両方とも VPC領域に置く必要があるのですが、Lambdaの起動が遅くなる場合があります。 これは、一定時間Lambdaがコールしない場合にスリープ状態になり、 起動する際にE
以前は、LambdaからRDSへ接続するには、RDSをパブリックアクセス可能に設定し、LambdaのIPアドレスを通すようなセキュリティグループの設定も必要でした。 しかし、LambdaからVPCアクセスが可能となった今、スマートかつセキュアに接続をすることができます。 LAMP環境を作る AWS LambdaのVPC対応によって、LAMP環境の構築が容易になりました。 LAMP環境とは、LAmbda, MySQL, PHP で構成されるアプリケーションの実行環境のことです。 (Python?知らない子ですね) AWS Lambdaで動かすPHP AWS LambdaにはPHPが入っていません。 なので、PHPを動かすためには、Node.jsなどのAWS Lambdaでサポートされている言語経由で、自分で用意したPHPの実行ファイルを起動する必要があります。 AWS LambdaでPHPを
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く