タグ

SQLに関するTomato-360のブックマーク (13)

  • SQLが重いときに見るお気軽チューニング方法

    SQLのチューニング方法 昔Qiitaで書いたものをzennうつして、若干の修正、追加をしてみました。 ORACLEでの経験を元に書いていますがコストベースのリレーショナルデータべースなら大体共通の考え方だと思うので他にも使えると思います。 SQLのチューニングといえば比較的容易に済むインデックスをとりあえず作成する。といった対応を取られがちですが、数万レコード程度でのデータ量ではあまり効き目がなく(自分の経験則)、どちらかといえば、結合順が大幅に狂ってたりすることが原因のことが多かったりします。よって当にインデックスがないことが原因なのか?を熟考する必要があります。(例えばID以外のフラグとかコードに単項目indexを貼ってるのもみたことがあります。怖いけど実話) また、インデックスを作りすぎるとオプティマイザが狂いやすくなって他のSQLにも悪影響を及ぼしたりするので結構熟慮して追加

    SQLが重いときに見るお気軽チューニング方法
  • GoでSQLにトレーシングコメントを埋め込んで実行する | おそらくはそれさえも平凡な日々

    アプリケーションが発行するSQLにコメントが埋め込めると便利です。例えば、 /* path/to/logic.go:334 */ SELECT ... のようにSQLに発行元の情報をコメントとして埋め込んでからExecすれば、DB側のログ(general log等)にも記録されるため、SREやDREサイドからも、負荷の高いSQLがアプリケーションのどこから発行されているかが分かりやすくなります。 Goには github.com/shogo82148/go-sql-proxy という、SQL実行をトレースし、フック処理を差し込める便利なライブラリがありますが、今回それにpull requestを送って、SQL実行前にクエリの書き換えができるようにしました。 https://github.com/shogo82148/go-sql-proxy/pull/61 https://github.co

    GoでSQLにトレーシングコメントを埋め込んで実行する | おそらくはそれさえも平凡な日々
  • Google、ORMが生成するSQLが遅いときの調査を容易にする「sqlcommenter」をオープンソースで公開。Rails、Spring、Djangoなど主要なフレームワークに対応

    GoogleORMが生成するSQLが遅いときの調査を容易にする「sqlcommenter」をオープンソースで公開。Rails、Spring、Djangoなど主要なフレームワークに対応 SQL文を直接書かなくとも、自動的にSQL文を生成、実行してくれるORM(Object-Relational Mapper)は、プログラミングを容易にしてくれる技術としてRailsやHibernate、Springなどさまざまなフレームワークなどで活用されています。 一方で、ORMが生成するSQL文はときに複雑に、あるいは非効率なものとなり、データベース処理の遅さにつながることもあります。 このとき、SQL文の生成と実行を明示的にコードとして記述する必要がないというORMの特徴が、なぜデータベース処理が遅くなったのか、どのようなSQL文が生成され、そのどこに原因があるのか、といった調査を難しくている面があり

    Google、ORMが生成するSQLが遅いときの調査を容易にする「sqlcommenter」をオープンソースで公開。Rails、Spring、Djangoなど主要なフレームワークに対応
  • SQLチューニング_理論と改善の実例_/pgcon19j_t4

    # SQLチューニング 理論と改善の実例 - 2019-11-15 開催のPostgreSQL Conference Japan 2019 の発表スライドです

    SQLチューニング_理論と改善の実例_/pgcon19j_t4
  • この連休の読書にオススメの一冊「SQLパフォーマンス詳解」(割引コードあり)

    最近、久しぶりにPostgreSQLのクエリチューニングをしていたのですが、その過程で「このはぜひもっと多くの人に読んでもらいたい」と改めて思い出した一冊がありました。 それは、「SQLパフォーマンス詳解(原題:SQL Performance Explained)」というです。 SQLパフォーマンス詳解 http://sql-performance-explained.jp/ パフォーマンスチューニング、特にクエリチューニングについて説明する場合、その前提となる知識は広範なものになります。 そのため、自分が頑張って説明するよりも、優れたエキスパートのまとめたコンテンツを活用させてもらう方が、質・量ともに優れたインプットにしていただけるのではないか、と思うのです。 また、この「SQLパフォーマンス詳解」は非常に良いであるにも関わらず、一般の出版社から出ているわけではないため、それほど積

    この連休の読書にオススメの一冊「SQLパフォーマンス詳解」(割引コードあり)
  • SQL: ナイーブツリーと経路列挙モデル - CUBE SUGAR CONTAINER

    今回のエントリは以前かいた SQL のアンチパターン「ナイーブツリー」に関する記事の続き。 blog.amedama.jp 再帰クエリをサポートしていない RDBMS で再帰的な構造を表現するための解決策のひとつ経路列挙モデルを扱う。 使った環境は次の通り。 $ sw_vers ProductName: Mac OS X ProductVersion: 10.11.4 BuildVersion: 15E65 $ mysql --version mysql Ver 14.14 Distrib 5.7.12, for osx10.11 (x86_64) using EditLine wrapper 下準備 まずは下準備として MySQL にデータベースを作るところまで。 今回使ったのは Mac OS X なので MySQL は Homebrew でインストールする。 $ brew instal

    SQL: ナイーブツリーと経路列挙モデル - CUBE SUGAR CONTAINER
  • PostgreSQL使いのためのSQLの使い方

    この記事はPostgreSQL Advent Calendar 2016 の3日目の記事です。 やあ、みんなげんき? 僕は酔っ払いです(カラオケ屋の3次会でこれを書いてます) 今日はみんなにSQLをもっと知ってもらうために下のスライドをご紹介します。 ※sampleで出てくるSQLを試せるようにDDLとか用意しました そうです、これ。 今日のPGConf.Asiaの登壇資料です。 僕はMySQLもPostgreSQLも使う中で「SQLならもっと簡単に書けるのにアプリ側で頑張ってる」って現象を度々見ます。 そこをちょっとしたSQLの知識があればすごく楽出来るのでみんなにも是非覚えてください。 コレを読んで興味がある人は下記のを読むとすごく勉強になると思います。 当に上記のはオススメ。 この先にインデックスチューニングとかパラメータチューニングとかDB設計があると思います。 そこまで興味

  • データを一箇所に集めることでデータ活用の民主化が進んだ話 - once upon a time,

    先日、この記事を読んで分析のハードルを下げること大事だよね、というのを思い出したのでつらつらと書いてみようと思います。 qiita.com 内容としては正直タイトル詐欺で、SlackからRDSにクエリ発行できるようにして、各種権限を持っているエンジニアでなくても分析できるようになったよ、という話です。 ここでいう「データ活用の民主化」というのはかっこ良く言ってみたかっただけで、「データ分析を生業にしている人以外もデータを活用してビジネスを進められるようになる」というくらいのニュアンスだと思って下さい。 「データ分析」というとアナリストの人がやること、みたいな職務が分かれている環境もあるとは思いますが、そうではない会社(前職)の一例です。 データ活用が広まった流れ 数秒〜数十秒で対話的にクエリが返ってくると、トライアンドエラーが100倍くらいできる 今まで実行計画を気にして避けていたことにガ

    データを一箇所に集めることでデータ活用の民主化が進んだ話 - once upon a time,
  • マーケティング担当者にSQLを完全マスターさせた話 - Qiita

    普段開発とかしない人達にもデータベースに簡単に触れられるようにしたお話です. 安全なデータベースを作る 番サービスのデータベースと同等,だけど個人情報的なものは隠しておきたい,よく聞く話ですね. これについては様々なアプローチがあるようですが,できる限り安定させたい&バッチでやるにしてもサーバの面倒を見たくない,とう方針のもと,RDSのスナップショットを利用して作成することにしました. 処理の流れ RDSが1日1回スナップショットを取っている(これはRDSの機能) RDSのスナップショットが取られると,RDSからイベント通知が投げられるので,SNS→SQSへ届くようにしておく(これもRDSの機能) CloudWatchでSQSのキュー数を監視するようにしておき,キューが1つ以上になると処理用のインスタンスを立ちあげる設定にしておく(CloudWatch,AutoScalingの機能) イ

    マーケティング担当者にSQLを完全マスターさせた話 - Qiita
  • SQLで木と階層構造のデータを扱う――入れ子集合モデル

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • Webで役立つRDBの使い方

    13. ID 名前 戦闘力 編 1 フリーザ 530000 フリーザ編 2 悟飯(幼少期) 1307 ラディッツ編 3 クリリン 206 ラディッツ編 4 ヤムチャ 177 ラディッツ編 5 農夫 5 ラディッツ編 6 ギニュー 120000 フリーザ編 7 クリリン 1500 フリーザ編 8 亀仙人 139 ラディッツ編 ※実務では編は正規化するべき

    Webで役立つRDBの使い方
  • データベースの内部動作を知る

    SQLのプログラミングは奥が深い。特にパフォーマンスの観点から、そう言えるだろう。 みなさんご承知の通り、同じ結果を出すプログラムでも、SQLの書き方次第で処理時間に何倍もの差が生じ得る。効率の悪いSQLを書いてしまう原因は、多くの場合、リレーショナルデータベースの内部動作やアプリケーションに関する理解不足である。両者をよく知った上で最適なSQLを書けるようになることは、システムエンジニアとしての重要なスキルの一つである。 特集『基礎から理解するデータベースのしくみ』では、リレーショナルデータベースの内部動作について、基的な部分を分かりやすく解説している。SQLプログラミングに役立つことはもちろん、SQLチューニングやデータベース設計のための基礎知識としても不可欠だ。 イントロダクション ブラックボックスのままでいいの? Part 1:SQL文はどのように実行されるのか SQL実行までの

    データベースの内部動作を知る
  • SQLの基礎 「SELECT」文を覚えよう

    記事のおもな内容 いろいろあるSQLの規格 サンプルデータベースを操作してみる SELECT文の基的な使い方 WHERE句の使い方 条件の指定方法 リレーショナルデータベースシステム(RDBMS)も、今や、システムの構築には不可欠なものとなりました。皆さんが目にしているシステムや、管理しているシステムでも、RDBMSが使われていないシステムを探すほうが大変ではないでしょうか。RDBMSの普及にともない、RDBMSへのアクセス手段であるSQLも、日常的によく見かけるものとなりました。 このSQL実践講座では、SQLの効率的な使い方をエッセンスにしてお伝えしていこうと考えています。SQLは、データを操作するために非常に簡単な構文で構成されているように見えます。ところが、実際に使い込んでいくと、一見簡単に取得できるように見えるデータが取得できない場面にぶち当たることがあると思います。また逆に

    SQLの基礎 「SELECT」文を覚えよう
  • 1