はじめに こんにちは、バックエンドエンジニアのSakiです!バックエンドでPHPを書いたり、PHPという言語そのもののメンテナーもしています。 この度、注文データダウンロードAppのパフォーマンスをアップさせるため、とても入念にデータベースまわりの処理を見直しました。その中でも特に速度に関わってくる「index」についての考え方をまとめたいと思います。 この記事はMySQL(InnoDB)についての記事であり、他のRDBについては当てはまらない場合もあるということにご注意ください。 indexとは何か、おさらい ご存知の方ももちろん多いと思いますが、indexについておさらいさせてください。 indexとは辞書でいうところの目次に相当するもので、目的のデータをいち早く検索するために重要なものです。もし辞書に目次が存在しなかった場合、目的の情報を探すのにとても苦労するだろうというのは想像しや
久々に溜まったブログネタ放出をしようかなと、その前に下書きから掘り起こしてきた、いまさらなスロークエリ関連で準備運動です。 RDSのスロークエリ情報は当然、集計を自動化していつでも見れるようにしてあるのですが、ちょいと必要があったので、今回はあえて単発ログを集計する形に切り出したものを用意してみました。 スロークエリログの必要性 最近はNewRelicとかで、アプリケーションの処理を分別して処理時間などを集計するので、それで課題となるクエリを確認したりもします。 非常に便利な仕組みですが、アプリケーション外のジョブなどが実行したクエリは集計されないことや、負荷試験で課題を炙り出すときだとテスト環境にエージェントやライブラリを仕込む必要がある、といったデメリットとまでは言わないまでも面倒さがあります。 その点、スロークエリはサーバー側で記録するものなので、0.1秒とかでONにしておけば、対象
CTO 室 SRE kenzo0107 です。 以前執筆した ECS を利用した検証環境の自動構築について、運用開始から3年の時を経ました。 実運用とその上で頂いた要望を取り入れ変化してきましたので、その経緯を綴ります。 tech.medpeer.co.jp 本稿、議論を重ね改善を進めて頂いたチームメンバーの知見を集めた元気玉ブログとなっております。 前提 社内では、以下の様に呼び分けしています。 本番相当の検証環境を STG 環境 本記事で説明する自動構築される仕組みを持つ環境を QA 環境*1 検証環境の自動構築の目的 開発した機能を開発担当者以外でも簡易的に確認できる様にし、以下を促進します。 ディレクターと開発者の仕様齟齬を減らす 改善のサイクルを高速化する 当時の検証環境の自動構築の仕組み 大まかな流れ ① ブランチ qa/foo を push ② CircleCI 実行 ③ C
オープンソースのリレーショナルデータベース管理システム「MySQL」。その派生版である「MariaDB」とともに高速かつ無料で利用できることから高い人気を集めています。 本日紹介する「awesome-mysql-performance」は、それらデータベースシステムのパフォーマンスを最適化するための情報をまとめたリンク集です。 MySQLやMariaDBを単にインストールして使用するための方法を説明した情報はインターネット上に多数存在しますが、より深い見識が必要となるパフォーマンス改善のための情報はあまり多くはありません。 データベースサーバーを運用してみてパフォーマンスの低下に悩まされている方必見の情報といえそうです。 サーバーの設定からInnoDBの最適化 同リンク数には以下の情報が含まれています。 Ten MySQL performance tuning settings after
目次 ワーカーノードの作成 DigdagとEmbulkのDockerビルド KubernetesにDigdag/Embulkをデプロイ Redashの導入 まとめ Kubernetes上に分析環境を構築する機会があったのでどのように構築したかを紹介します。同じような構成でKubernetes上で構築するのは3回目になったので構築方法も洗練されてきました。構成は以下のようになっています。 MySQL(RDS): サービスのデータベース。ここのテーブルからBigQueryにEmbulkでデータをエクスポートします。 PostgreSQL(RDS): Digdagのデータベース。今回新たにつくりました。 Digdag: データベースのエクスポートなどを実行するタスクスケジューラ。失敗したときにリトライもできます。 Embulk: プラグインを使ってデータベースをMySQLからBigQueryにエ
以前embulkでCSVからelasticsearchへというのをやってみました サービスのデータからグラフ作成したいとかそういった場合に、MySQLからデータ取ってきてelasticsearch+kibanaですぐ確認できるよねっていうことを思いついたためやってみた embulkのインストール 下記参照 embulkでelasticsearchへ過去ログを入れ込む pluginのインストール embulk gem install embulk-input-mysql 設定 config.yml in: type: mysql host: localhost user: user password: "" database: service query: | SELECT date, SUM(c), SUM(a) FROM report GROUP BY date exec: {} out
こんにちは。最近リモートワーク用にマイクを買ったソフトウェアエンジニアの福間(fkmy)です。 先月、ANDPADのデータベースの技術顧問をして頂いてる三谷(mita2)さんによるロックの基礎編)〜について勉強会を開催しました。今月はロックのDDL編について8/4(月)に勉強会を実施しました。重要な箇所をピックアップします! また今回も在宅勤務期間中のためオンライン開催となり当日は16名が参加していました。 内容 当日の資料はこちらになります。 DDLについて DDLとはData Definition Languageの略称でデータ構造を定義するための言語のことです。SQLではCREATE文、DROP文、ALTER文、TRUNCATE文が該当します。 DDLの仕組みと改善の歩みについて MySQLのALTER TABLEの初期実装 新しいテーブル定義のテーブルにデータコピーする 実行中は書
背景 2020年4月に六本木のToC向けメディア系サービスを運営する企業に新卒入社した社会人1年目のエンジニアです。入社する1年前から始めた内定インターンではサーバーサイド開発はGolangを使っていましたがメインの開発はVue.js/Nuxt.jsでのフロントエンド開発であった為、Golangは殆ど初心者レベルでした。今回は勉強目的でTODOアプリ用のAPIサーバーを0から開発したので、そのノウハウなどをこの記事で共有できればと思っております。 この記事の対象者 Golangを勉強し始めた初心者の方 Golangを使ってサービスを開発したいと考えている初心者の方 アーキテクチャ 次のような簡易なアーキテクチャにしました。言葉で説明するとちょっと長くなりそうなのでdocker-compose.ymlを添付しておきます。 version: '3' services: app: build:
古代のWebアプリケーションエンジニアなので、現代との差分を身に付けていくぞ! 個人的なスキルセットの差分を埋めるためのものなので、誰にでもマッチするものではありません。 習うより慣れろの精神で、読んで終わりじゃなくて手を動かします。 コンテナ化 x done.icon The Twelve-Factor App (日本語訳) done.icon What is Amazon Elastic Container Service? - Amazon Elastic Container Service 機械翻訳がひどかったので英語版をGoogle翻訳で読むほうがマシそう メニュー1階層目だけ全部読んで、気になるところがあれば深堀りする ↑で物足りなかったらKubernetes完全ガイド 第2版 impress top gearシリーズ | 青山真也 | 工学 | Kindleストア | Ama
+----+-----------+-------+ | id | name | price | +----+-----------+-------+ | 1 | りんご | 100 | | 2 | りんご | 200 | | 3 | バナナ | 250 | | 4 | バナナ | 250 | ←削除したい | 5 | ぶどう | 100 | | 6 | ぶどう | 100 | ←削除したい | 7 | ぶどう | 120 | +----+-----------+-------+ DELETE FROM fruits WHERE id NOT IN (SELECT min_id from (SELECT MIN(id) AS min_id FROM fruits GROUP BY name, price) AS tmp); +----+-----------+-------+ | id |
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く