activerecord

Active Record x Oracle 12c (19c) における `ALL_SYNONYMS` のパフォーマンスリグレッション回避

勤務先で行っている今月のパッチ会で、yahonda さんに相談した Active Record Oracle enhanced adapter の発行しているスロークエリ対策について書き残しておきます。先に結論を書くと処理によっては、処理によってはパフォーマンスが3〜5倍ほど改善されまし…

pluck.uniqをdistinct.pluckに置換する

先日リリースした RuboCop Rails 2.6.0 でバグフィックスされた Rails/UniqBeforePluck についての話。 この Cop は RuboCop Rails に細かな部署があるなら、スタイルではなくパフォーマンスに属するもの。RDBMS から結果を取得したあとに Ruby の uniq で一…

Rails 6.0で不要なArel.sqlを減らす

Rails 5.2 で以下のように Arel.sql を使ってセキュアな文字列であることを明示するという警告が出るようになっていたのは、多くの Rails アプリケーション開発者が通ってきているように思える。 DEPRECATION WARNING: Dangerous query method (method whose…

Active Recordでのヒント句の書き方

Active Recordでのヒント句の書き方について。 クエリの実行計画の最適化を RDBMS のオプティマイザ (プランナ) に任せずに、アプリケーション側で指定するのにヒント句というのがあります。通常 RDBMS のオプティマイザに任せたりしていますが、DBA からチ…

Rails 6.1でサードパーティーのArel visitorが外される

Active Record でサポートしているコアアダプターの MySQL, PostgreSQL, SQLite 以外のサードパーティーの RDBMS に対する Arel visitor がコアから外されることになった。 github.com SQL Server は以前から独自で梱包していたようで、Oracle は今回対応し…

Active Record Oracle enhanced adapter 5.2.6 がリリースされた

Active Record Oracle enhanced adapter 5.2.6 がリリースされた。 変更点としては、RailsConf 2019 の帰りの飛行機で書き始めていた TCP keepalive について database.yml から設定可能にする機能追加となる。 github.com database.yml に以下のように tcp_…

Active Record Oracle enhanced adapter 6.0.0.rc1 がリリースされた

Rails 6.0.0.rc1 にあわせて Active Record Oracle enhanced adapter 6.0.0.rc1 がリリースされた。yahonda さんリリースありがとうございます。 github.com 今回の Oracle への ORM としての目玉は Address ORA-01795: maximum number of expressions in a …

oracle-enhanced-monky_patch_755 (1.0.0) をリリースした

先日の日記に書いたとおり表題のモンキーパッチ Gem のファイナルリリースをした。 koic.hatenablog.com Rails 5.2 からは Active Record Oracle enhanced adapter を純正にてご活用ください。 github.com

activerecord-oracle_enhanced-adapter-monky_patch_755 を開発終了する

TL;DR としては Rails 5.2 からは純正の Active Record Oracle enhanced adapter を使いましょうといったもの。 Active Record Oracle enhanced adapter の Rails 4.2 から Rails 5.0 への変更で要されるスキーマの DATE 型を TIMESTAMP 型にマイグレーショ…