23 Apr 2023

最近読んだもの 58 - SQLite の過去現在未来など

  • SQLite: Past, Present, and Future
  • The tail at scale
  • How Big Tech Runs Tech Projects and the Curious Absence of Scrum - The Pragmatic Engineer
  • MySQL Data Caching Efficiency
    • Innodb_buffer_pool_read_requestsInnodb_buffer_pool_reads からいわゆるバッファプールのキャッシュヒット率を計算できる
  • GNU/Linux shell related internals | Viacheslav Biriukov
    • File descripter, pipe, process groups, terminal といった話題を解説する一連の記事
    • リチャードスティーブンスの APUE のファイルに関する章のような内容を説明しているが、より現代の視点から書かれているのと、説明のテンポが良く読みやすいのがいい
  • MySQL 5.7 Upgrade Issue: Reserved Words
    • MySQL 8 系にアップグレードすると、予約語が増える
    • rank, system, skip, lead などは引っかかりやすそう
  • COMMIT Latency: Aurora vs. RDS MySQL 8.0
    • SELECTUPDATE はおおむねメモリ上での操作ナノに対して、COMMIT はディスクへの書き込みを伴う
    • Aurora と RDS で COMMIT のレイテンシを調査したところ、Aurora のほうが安定して良い結果だった
  • MySQL :: What is the “(scanning)” variant of a loose index scan?
    • GROUP BY などでインデックスを走査する際に、インデックスを全走査せず不要な部分を飛ばす最適化をした際に、実行計画に loose index scan と表示される
    • 例えば GROUP BY でグループごとの最小値を集計する場合、インデックスのソート順がうまく使える場合は、GROUP BY の各キーの最初の値だけを見てそれ移行は飛ばすことができる
  • Announcing Blip: A New MySQL Monitor
    • 新しい MySQL のモニタリングツール
  • How I became a machine learning practitioner
    • OpenAI の共同創業者で元 Stripe の CTO である Greg Brockman が、OpenAI に参画してから、自分の専門性とは異なる AI 分野に対して試行錯誤した記録
    • このレベルの人でも泥臭く失敗しながらやっていることが綴られていて興味深い
  • Connection pooling in Vitess
    • Vitess のコネクションプールについて、その意義、セッション単位の設定とコネクションプールの相性の悪さ、それを回避するための各種方法など
    • セッション単位の設定があるクエリでコネクションプールの旨味をできるだけ活かすために、書き換えられるものは SET_VAR に書き換えて、それが難しければ専用の接続をそのクライアント用に確保する
    • Vitess15 からは Settings Pool という新しい仕組みが導入された。特定の設定に変更されたセッションをプールに保持するというアプローチ
  • Comparisons of Proxies for MySQL
    • MySQL Proxy の比較
    • 性能は haproxy > Porxy SQL だが、機能的には後者が多機能なので使い分け
    • MySQLRouter はかなり悪い結果となっている
  • A Healthy Bundle
    • Gemfile などパッケージ管理システムで定義するライブラリのバージョン指定は、特定のバージョン固定やメジャーバージョンだけ指定するなど柔軟にできるが、どのような方針で指定すべきか
    • 例えば Rails といった影響範囲が大きいものは細かくバージョンを指定する、まだ安定していないライブラリ (後方互換性を壊す変更が入ったり、ブレイキングチェンジがまだまだあり得るもの) はメジャーバージョン・マイナーバージョンまで固定する悲観的な指定を、安定していて後方互換性を壊す変更が入ることもないものはバージョン指定をなくすなど楽観的な指定をする