SQL

MySQL

January 1, 2020
MySQL, SQL

MySQL Basic # Preparation # Install to macOS # $ brew install mysql Start # $ mysql.server start Starting MySQL ....... SUCCESS! Check the vertion # $ mysql --version mysql Ver 8.0.26 for macos11.3 on x86_64 (Homebrew) Make initial settings # $ mysql_secure_installation パスワード強度検証プラグインの利用有無 パスワード強度の選択 root ユーザーのパスワード設定 匿名ユーザーの削除 リモートからの root ユーザーとしてのログインの禁止 サンプル用 test データベースの削除 $ mysql_secure_installation Securing the MySQL server deployment. Connecting to MySQL using a blank password. VALIDATE PASSWORD COMPONENT can be used to test passwords and improve security. ...

PostgreSQL Basic

January 1, 2020
PostgreSQL, SQL

PostgreSQL Basic # Install # % brew update % brew search postgresql % brew install postgresql@15 % echo 'export PATH="/usr/local/opt/postgresql@15/bin:$PATH"' >> ~/.zshrc % source ~/.zshrc % psql --version psql (PostgreSQL) 15.4 (Homebrew) % brew services start postgresql@15 ==> Successfully started `postgresql@15` (label: homebrew.mxcl.postgresql@15) # **** is default user name % psql -l List of databases Name | Owner | Encoding | Collate | Ctype | ICU Locale | Locale Provider | Access privileges -----------+-------+----------+---------+-------+------------+-----------------+------------------- postgres | **** | UTF8 | C | C | | libc | template0 | **** | UTF8 | C | C | | libc | =c/**** + | | | | | | | ****=CTc/**** template1 | **** | UTF8 | C | C | | libc | =c/**** + | | | | | | | ****=CTc/**** (3 rows) # Login to PostgreSQL % psql -h localhost -p 5432 -U your_username -d postgres psql (15. ...

MySQL EXPLAIN

January 1, 2020
MySQL, SQL, EXPLAIN

MySQL EXPLAIN # 前提 # MySQL 5.7 SQLチューニングの手順 # スロークエリ(重いクエリ)を抽出。 スロークエリ・ログに記録。 スロークエリを集計。 実行計画(MySQLが内部的に立てる実行手順)=「MySQLの意思表示」を確認。 EXPLAIN を、SELECT・DELETE・INSERT・REPLACE・UPDATE の先頭につけて実行。(MySQL5.6.3より前は SELECT のみ) チューニング。 SQLの改善。 INDEX(テーブルの索引)の追加。日本語では「インデックスを張(は)る」と言う場合が多い。 テーブル構成の見直し。 スロークエリーログ # 設定の項目 # 設定項目 設定内容 slow_query_log スロークエリーログを出力する際に必要となる設定。デフォルト値は0。 long_query_time スロークエリーログを出力するための閾値(しきいち)の設定。0秒~360024365の範囲で指定。小数点以下の値を指定することでμs単位まで指定が可能。0秒を指定することで発行されたSQLを全部保存することも可能。 log_queries_not_using_indexes インデックスが未使用なクエリに関して記録をする設定。 slow_query_log_file スロークエリーログが出力される先を指定。 設定の方法 # 設定値は、1 が ON、0 が OFF。 最後の slow_query_log_file のsetでエラーが出た場合は,別のディレクトリを指定するか,もしくは指定したファイルを適宜作って書き込み権限を与えること。 MySQLのコンソールから設定 mysql> SET GLOBAL slow_query_log = 1; mysql> SET GLOBAL long_query_time = 5; mysql> SET GLOBAL log_queries_not_using_indexes = 1; mysql> SET GLOBAL slow_query_log_file = '/path/to/mysql/slow_query. ...