IntelliJ IDEA の試用に手を上げる人が少なかったら、コードほとんど書かない老人けど参加するよーと、言ってたら、本当に試用ライセンスが回ってきました。
Java は3Q成果が実質2行、4QはDBリファクタリングした結果Java成果行数は負数になってて1日の作業時間の大半はIDEじゃなく、AWSコンソール、Mackerel、AppDynamics、ターミナルの人です。
Database Tool Window
View | Tool Windows | Database
これで、PostgreSQLはもちろん、Oracle, SQLServer, MySQL, SQLite, Amazon Redshift まで接続してpgAdminのように VisualでDB操作できます。
気に入ったところ
- デフォールトでページネーション入ってる
- 50行だったか500行だったか もちろんどこかで設定可能
- うっかり巨大な結果が返ってくるSQL投げても割とすぐに制御を取り戻せる
- pgAdminIII が1000万行級Tableのprefetchだかなんだかで、分単位で固まってたのが、ストレスフリーに
- 同じ接続先なので、サーバ側性能差はまったくなし
- クライアント側の「作りこみ」の問題でしょうね
- ちょっとSQL書いてみても、補完アシストがかなりいい感じ
Monster Query Hunter に IntelliJ IDEAを持たせると
Monster Query Hunter を書いたのが1年以上前になりました。現代的な道具を手にすると、どんなハンティングになるのか、見ていただきましょう。
AppDynamics で SlowSQL をみつける
AppDynamics で Database Calls | Slowest Database Calls
に行けばすぐ採取できます。
1年前のはPostgreSQLログから採取してました。
IntelliJ IDEA Database Consoles にペースト
長いSQLにたくさんパラメータが混じってますが気にしない。そのまま貼り付けます。
SQLフォーマッタ
Beautiful! 圧倒的な見通しの良さ!
SQL部分実行・パラメータ化された文の実行
Long Long query なのでいきなり全部を理解しようとはしません。まずは最初の WITH句です。
選択した範囲だけを実行できます。
そこにパラメータ置換文字が入っていたら対話的に聞いてくれます。
下のOutput にエラーが出ちゃった。
[2019-02-15 17:32:50] [22P02] ERROR: invalid input syntax for integer: "2019-02-15"
[2019-02-15 17:32:50] ポジション: 43
この列はinteger なんだ。でも、値域がわからない。ぼくの作ったTableじゃないから。
助けてよ~ IntelliJ~
クイック評価
しかたないな~ 「クイック評価~」
Table名のところをポイントして、Ctrl+Alt+F8
textbook から実際に2行取り出したポップアップが出てくれる。ここの published
を見れば、4桁西暦だってわかるだろ。
ポップアップのMoreを使えばもう少しサンプル増やすこともできる。
Explain to Table
PostgreSQLの EXPLAIN <sql>
の出力は、アプリケーションエンジニアのための実行計画 にあるように、インデントされて、文字列、数字が一杯のもので、人間に読みやすいものではありません。
いやまあ、コンテキストメニュー(右クリック)からSQLの一部でも全体でもさくっと EXPLAIN が採取できるのは有り難いんですが、とくに Long Long queryの場合の結果を読むのは辛い。
それが Explain Plan (Raw)
じゃなくて、Explain Plan
の方を使うとこうなるのです。
Beautiful!
Rows と Cost が表形式に整列されて、比較が一瞬のうちにできる。どこが律速しているか一目瞭然。
おまえや、このNestedLoopJoinの5連発!
※この機能は中国地方DB勉強会 in 岡山(2019-02-02)で教わりました。
https://speakerdeck.com/maepon/sqlturu-number-chugokudb?slide=23
結論
MUST BUY
DBAにとっても、IntelliJ IDEA はおっそろしく有用なToolです。
「統合開発環境」IntelliJ IDEAは、これまで使ってた Eclipse + SourceTree + pgAdmin が1つになって、ツール切り替えに伴う、人間の頭のスイッチング時間がなくなります。なくなって初めて、ここにストレスかかってたんだと気がつきます。
一度試用したら、これなしの仕事には戻れません。
試用ライセンスが万一失効してライセンス貸与されなかったら、IntelliJ IDEA のある環境に移ることを考え出すくらいには。
(追記)無事、試用ライセンスから、正規ライセンスにしてもらえました。