Railsのdatabase.ymlについて
はじめに
Railsのデータベース接続の中身をいまいち理解していないまま使っていたので調べてみました。
ActiveRecordでデータベースに接続するにはconfig/database.ymlに設定を定義する必要があります。
そのdatabase.ymlについて深堀りしていきたいと思います。
メモ
デフォルトの設定ファイル
railsアプリを作成したときに用意されたデフォルトのdatabase.ymlです。
この設定ファイルはMySQL仕様になっています。
default: &default adapter: mysql2 encoding: utf8mb4 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: root password: socket: /tmp/mysql.sock development: <<: *default database: MysqlTest_development test: <<: *default database: MysqlTest_test production: <<: *default database: MysqlTest_production username: MysqlTest password: <%= ENV['MYSQLTEST_DATABASE_PASSWORD'] %>
yamlについて
そもそもyamlを書いて来なかったのでyamlについて。
アンカー
&を利用することで名前を付け、定義した内容を他の場所で参照できるようにする。
&default
エイリアス
*を利用することでアンカーで定義した内容を参照する。
*default
マージする
<<を利用することでマージをする。
<<: *default
database.ymlのパラメータについて
adapter: 接続するデータベースの種類 encoding: 文字コード pool: コネクションプーリングで使用するコネクションの上限 username: ユーザー名 password: パスワード socket: ソケットファイルのパス
コネクションプールとは??
DBに接続した状態を維持したコネクションをいくつか用意ておき、それを使い回す仕組みのこと
DBとの新規接続を減らすことでパフォーマンスを向上させるらしい、、、
デフォルトでは5つのコネクションを使い回すように設定されているようです。