Profit verbose_query_logs = true でない環境でrails serverのログが少し追いやすくなる ActiveJobを使っている場合はジョブのログも スロークエリログの発生箇所が少し特定しやすくなる How to Railsアプリケーションの設定に以下を追加するだけ config.active_record.query_log_tags_enabled = true # カスタマイズする場合は `query_log_tags=` を使って指定可能 config.active_record.query_log_tags = [ :controller, :action ] 前提知識 Verbose Query Logsについて Railsアプリケーションを開発していてふとログを見た時に、SQLログのすぐ下にソースコードのどの行で呼ばれたのかが出力されている (
こんにちは、iCAREサーバーサイドエンジニアの寺井(@krpk1900_dev)です。 私は今まで新規機能の開発を担当することがほとんどで、既存機能のパフォーマンス改善に取り組むときに何から手を着けて良いか分からなかったため、今回はSQLパフォーマンスチューニングについて調べた内容を記事にしたいと思います。 全体の流れ ざっくり調べてみた内容をフローチャートで整理してみました。 このフローチャートには含めませんでしたが、根本的な解決策としてそもそものロジックやデータ構造を見直すという方法もあります。 1. レスポンスに時間がかかっている箇所とその原因を特定する まずはDatadogのAPMなどでレスポンスに時間がかかっているリクエストを特定します。 APM(Application Performance Monitoring)とは、アプリケーションの性能を管理したり監視するための機能です
トップコラムデジタル人材のためのブックレビューITジャーナリストや現役書店員、編集者が選ぶ デジタル人材のためのブックレビュー 第14回:『HTML解体新書』、『楽々ERDレッスン』 Webを支える技術のうちクライアントサイドで中心的に使われる技術としては、大きく分けてHTML、CSSとJavaScript(+JSON)が挙げられる。 そのうちCSSやJavaScriptについては現在に至るまでさまざまな書籍が刊行されているが、その中でHTMLは比較的地味な存在となっている。Webデザインの分野でCSSと合わせて基本的なところを紹介する書籍や、辞書・カタログ的にHTMLの各要素とその属性等を紹介したりする書籍は継続的に刊行され続けているが、HTMLそのものにフォーカスした書籍はさほど多くはない。 そんな中、本書は久々に刊行された、HTMLを正面から扱う本格的な解説書である。 HTMLを取り
概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Know what your scopes are doing: where.first vs find_by - Andy Croll 原文公開日: 2022/03/14 原著者: Andy Croll 日本語タイトルは内容に即したものにしました。 参考: 週刊Railsウォッチ20220328 where.firstとfind_by Active RecordのようなORM(Object-Relational Mapper)でSQLを生成することには多くのメリットがあります。明確で再利用しやすい抽象化を手に入れられるので、時間も節約でき、可読性も向上します。 ただし、ORMの便利な抽象化機能そのものが思わぬ結果をもたらすこともあります。 データベースサーバー上で実行される「実際の」SQLはフレームワークが生成するので、気をつけ
2016年はじまってもう2月になってしまいました。 遅ればせながら、あけましておめでとうございます。 昨年から相当ハードなスケジュールでなかなかブログが書けてないですが、 今年はもう少し書く時間を確保したいところ。 頑張ります。。 今日のお題は SQLでLike句を使う場合に RailsでActiveRecordを使ってwhere句 Hogehoge.where('name LIKE ?', "%#{args[:name]}%") の様な書き方をするケース もしくはscopeでArelに設定して scope :by_name, ->(name) { where(arel_table[:name].matches("%#{name}%")) } の様な書き方もよく見かけますが、 like句に対してサニタイズするのを忘れてしまうこともあります。 Rails4.2からサニタイズするメソッドが利用
概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: avoid OR for better PostgreSQL query performance - Cybertec 原文公開日: 2018/05/07 著者: Laurenz Albe サイト: CYBERTEC -- データサイエンス分野でのPostgreSQLサポートやコンサルティングを行っている企業です ※挿絵は原著者自らによるものです。 生きるべきか『OR』死すべきか、それが問題だ」 「帰れ!」「非効率!」「同義反復!」 © Laurenz Albe 2018PostgreSQLクエリのチューニングは私たちCybertecの日常的な業務ですが、チューニング中にクエリにORを1つでも見つけた瞬間、恐ろしさに身の毛もよだつ思いがします。たいていの場合、ORはクエリのパフォーマンス低下の原因となるからです。 言うまでもないこ
The SELECT statement is the basic starting block for queries that read information out of the database. A minimal select statement is generally comprised of select [some set of columns] from [some table or group of tables]. In this case, we want all of the information from the facilities table. The from section is easy - we just need to specify the cd.facilities table. 'cd' is the table's schema -
こんにちは。開発部データエンジニアの遠藤です。現在、私はデータ×テクノロジーでZOZOグループのマーケティングを支援するデータチームに所属して、データ処理基盤の運用などに従事しています。 本記事では、Lookerを用いて運用中のデータ集計基盤をきれいなデータをスマートに取り出せる基盤に改良した件について報告します。 データ集計基盤で燻っていた問題 1. クエリ管理の限界 2. 集計定義に対するデータの信憑性が謎 Lookerは何が良い? ~データガバナンス機能~ LookML データディクショナリ Gitによるバージョン管理 データ集計基盤(改)の設定フロー データ集計基盤(改)でのデータマート更新 まとめ データ集計基盤で燻っていた問題 ZOZOでは、サービスに関するあらゆるデータをBigQueryに集約しています。BigQueryに集約した大量のデータからデータマートとして必要なデータ
ActiveRecord で、has_many で定義した関連があるとき、その関連の件数を取得するのには、count, size, length の3つのメソッドがあります。さらに、0件かどうかを調べるためには、empty? や exists? といった問い合わせメソッドもあります。 これらの使い分けについて、なるべく分かりやすくなるように解説してみたいと思います。 はじめに、has_many関連とは、次のようなコード例における、company.users のことを指します。 class Company < ActiveRecord::Base has_many :users end class CompanyUsersController < ApplictaionController def index company = Company.find(params[:company_id
sqldefのリポジトリ github.com これは何か Ridgepoleというツールをご存じでしょうか。 これはRubyのDSLでcreate_tableやadd_index等を書いてスキーマ定義をしておくとそれと実際のスキーマの差異を埋めるために必要なDDLを自動で生成・適用できる便利なツールです。一方、 で言われているように、Ridgepoleを動作させるためにはRubyやActiveRecordといった依存をインストールする必要があり、Railsアプリケーション以外で使う場合には少々面倒なことになります。*1 *2 そこで、Pure Goで書くことでワンバイナリにし、また別言語圏の人でも使いやすいよう、RubyのDSLのかわりに、誰でも知ってるSQLでCREATE TABLEやALTER TABLEを書いて同じことができるようにしたのがsqldefです。 使用例 現時点ではMy
■ データベースにモジュールを適用する。 ログインする psql -U [ユーザ―名] -d [モジュールを適用するデータベース名] モジュールをインストール create extension dblink; これでインストールされます。 ■ 接続 以下のSQLを発行すると’接続名’で定義した名前でコネクションを生成します。 select dblink_connetct(‘接続名’,’host=host2 port=5432 dbname=db2 user=xxx password=xxx’); ■ 切断 以下のSQLを発行すると’接続名’で定義したコネクションを切断します。 select dblink_disconnect(‘接続名’); ■ 接続先のデータベースにSELECT文を実行するには 上記の接続を実行後に以下のSQL実行することで、値が取得出来ます。 ※SQLの返り値の型指定を
Chartio has joined Atlassian! For over a decade, we have loved serving tens of millions of charts on millions of dashboards for thousands of incredible companies. All of you have helped us create a product that truly enables anyone in a company, not just data teams, to explore and understand their data. We are excited to announce that we have joined Atlassian and are now focused on bringing our te
トランザクションとは 1つの作業単位として扱われるSQLクエリの集まりです。 複数のUPDATEやINSERTをひとつの集まりとして、 それらのクエリがすべて適用できた場合のみデータベースに反映します。 ひとつでも適用に失敗したクエリがあった場合は、そのまとまりすべてのクエリの結果は反映しません。 ACID特性 トランザクション処理に求められる4つの特性です。 原子性 (Atomicity) トランザクションに含まれる手順が「すべて実行されるか」「すべてされないか」のどちらかになる性質。 一貫性 (Consistency) どんな状況でもトランザクション前後でデータの整合性が矛盾なく保たれる性質。 分離性 (Isolation) トランザクション実行中は、処理途中のデータは外部から隠蔽されて他の処理に影響を与えない性質。 永続性 (Durability) トランザクションが完了したら、シス
SQL、書いてますか? こと大規模データ処理の分野においてはSQLはもはや標準インターフェイスであり、 分析やらバッチやらに関わっている皆様は日々大量のSQLクエリーを生産していることと思います。 そこでちょっと気になるのが、 SQLのコーディングスタイルってどうするのが一般的なんだっけ……? という点です。 イマドキはSQLなんてO/R mapperに吐かせることが多いからなのか、 それともコードを広い範囲で共有することがそもそもないからか、 SQLのコーディングスタイルについて見聞きすることは他のプログラミング言語に比べるとだいぶ少なく、 いまいち決定版と言えるスタイルがないなと感じています。 そんなわけで本日は、SQLのコーディングスタイルについての意識を活発化させるべく、 クックパッドでわたし(青木)が使っているコーディングスタイルから特徴的な点を紹介したいと思います。 特に、分析
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く