タグ

2017年12月24日のブックマーク (4件)

  • ActiveRecordでINの中が一万個とかにならないようにする - かみぽわーる

    この記事は MySQL Casual Advent Calendar 2017 の23日目の記事です。 みなさんORマッパーは使っていますか? 僕は仕事とか趣味でActiveRecordというORマッパーを使っているんですけど、こいつ例えば Team.preload(players: :high_score).to_a みたいなことをするとすぐ SELECT `scores`.* FROM `scores` FROM `scores`.`id` IN (a, b, c, ...数千個続く...) みたいなクエリを生成しよるんですけど、MySQL 5.7に上げたときに range_optimizer_max_mem_size の制限で実行計画がテーブルスキャンに落ちてえらい目にあったことがありました。MySQL側で range_optimizer_max_mem_size = 0 することで

    ActiveRecordでINの中が一万個とかにならないようにする - かみぽわーる
  • Railsのログをなんとかしたい人生だった - Qiita

    Railsのログ問題 便利なことにRailsは特に設定しなくてもproduction.logにログを吐いてくれる。エラーメッセージやSQL文も出力してくれるので助かる反面、以下のような問題点がある。 1リクエストで複数行流れるので、エラー調査や緊急対応時にgrepできない デフォルトだと若干冗長すぎる Fluentd等のログの活用を考えた際にパースが非常に面倒 Rails.loggerをオレオレカスタマイズするのも無くはないが、メンテナンスのことも考えて、ログ出力用ライブラリLogrageを使ってJSON形式のログをスマートに出力するようにした。 Logrageとは Railsのログのいい感じに出力してくれるライブラリ https://github.com/roidrage/lograge ちなみにLogrageの説明ではRailsのデフォルトログを「noisy and unusable,

    Railsのログをなんとかしたい人生だった - Qiita
    takaesu
    takaesu 2017/12/24
    rails log をパース可能なようにする
  • [Rails]STIから脱却してCTIでポリモーフィックを実現する - Qiita

    Ruby on Rails Advent Calendar 2017の24日目の記事です。 SQLアンチパターンやPofEAAで「オブジェクト指向設計で抽出されたスーパークラス・サブクラスから成る継承階層をリレーショナルデータベースのテーブルとして実装するためのパターン」として具象テーブル継承、クラステーブル継承、単一テーブル継承(STI)の3つが紹介されています。 みんなRailsのSTIを誤解してないか!? その中でRailsはSTIはサポートされてますが、その他2つは自分で頑張ってポリモーフィックを実現しないといけないです。 STIを使わない理由としては NULLを許容したくない UpdateではなくInsertでデータ保存のフローを作りたい has_manyなデータはSTIだとjson型などスキーマレスになる あたりでしょうか。 今回はクラステーブル継承を実現する方法を書きます。デ

    [Rails]STIから脱却してCTIでポリモーフィックを実現する - Qiita
    takaesu
    takaesu 2017/12/24
    class table inheritence クラステーブル継承
  • NULLと戯れる: ORDER BYとNULL - Qiita

    ORDER BYで指定したカラムにNULLが含まれる場合、NULLの現れる順序はRDBMS毎に異なるので注意が必要です。 変更履歴 2017/07/03 12:30 DB2 11.1の変更点について修正 2017/02/28 16:00 DB2の実装について修正 RDBMSごとの実装 ORDER BY時にNULLを最小の値として扱うRDBMSと、最大の値として扱うRDBMSの2種類が存在します。 RDBMSによっては、ORDER BYのオプションとしてNULLS FIRST/LASTを指定することで、NULLの順序を指定することが出来ます。 SELECT colname FROM tablename ORDER BY colname NULLS FIRST SELECT colname FROM tablename ORDER BY colname NULLS LAST 以下のRDBMS

    NULLと戯れる: ORDER BYとNULL - Qiita