「MySQL」カテゴリーアーカイブ

MySQL Slowlog パラメータの意味

スロークエリログには以下のような値が出力される。

# Time: 180307 14:34:31
# Query_time: 705.135178  Lock_time: 0.000077  Rows_sent: 100  Rows_examined: 1046531642

Query_time クエリの実行時間(単位:秒)
Lock_time クエリの実行が開始されるまでの時間。他のスレッドのロックの待ち時間 The time spent waiting for table locks. This value is computed in microseconds but normalized to picoseconds for easier comparison with other Performance Schema timers.
Rows_sent 文の実行中にストレージエンジンから読み取られた行の数 The number of rows returned by the statement.
Rows_examined 操作対象となった行数 The number of rows read from storage engines during statement execution.

参考:mysql
https://dev.mysql.com/doc/refman/5.6/en/events-statements-current-table.html
参考:stackoverFlow
https://stackoverflow.com/questions/19036176/how-to-interpret-slow-query-log-information-generated-by-mysql

MySQL (MariaDB)スロークエリを見つける

■MySQLのコンソールから動的に設定する

スロークエリログを出力する設定になっているか確認する

■上記slow_query_log がOFFになっているとスロークエリの出力は行われない。
以下のコマンドを実行する。

slow_query_logがONのとき、long_query_time( 上記では0.4秒)を超える場合はスロークエリとして出力される。

変更されているかを確認する場合は、一旦コンソールを抜けて、再度入り直すと反映が確認できる。

■以下で閾値を確認出来る。

MySQLパラメータ確認

mysql> SHOW VARIABLES;
または
mysql> SHOW VARIABLES LIKE ‘%cache%’;
以下のように出力されるよ
+——————————–+———————-+
| Variable_name | Value |
+——————————–+———————-+
| binlog_cache_size | 32768 |
| binlog_stmt_cache_size | 32768 |
| have_query_cache | YES |
| host_cache_size | 279 |
| innodb_disable_sort_file_cache | OFF |
| innodb_ft_cache_size | 8000000 |
| innodb_ft_result_cache_limit | 2000000000 |
| innodb_ft_total_cache_size | 640000000 |
| key_cache_age_threshold | 300 |
| key_cache_block_size | 1024 |
| key_cache_division_limit | 100 |
| max_binlog_cache_size | 18446744073709547520 |
| max_binlog_stmt_cache_size | 18446744073709547520 |
| metadata_locks_cache_size | 1024 |
| query_cache_limit | 1048576 |
| query_cache_min_res_unit | 4096 |
| query_cache_size | 1048576 |
| query_cache_type | OFF |
| query_cache_wlock_invalidate | OFF |
| stored_program_cache | 256 |
| table_definition_cache | 1400 |
| table_open_cache | 2000 |
| table_open_cache_instances | 1 |
| thread_cache_size | 9 |
+——————————–+———————-+
24 rows in set (0.00 sec)

う~んmysql文字化け

mysqlをちゃんと設定してたつもりだったのだが
cakeで画面に表示したデータが文字化けする。
他のDBはすんなりいくのにmysqlけっこう躓く。

・mysqlに直接文字コードutf-8でデータを流し込む
・sshから見ると文字化けしない。
・CSEでも文字化けしない。
・htmlのcharsetの指定はutf-8でおかしくない
・ファイルの文字コードもutf-8で保存している

findAllした直後のデータを見ると化けている。
ここが問題か。
my.cnfを見直す
これが「skip-character-set-client-handshake」抜けていたのか!

my.cnfの[mysqld] セクションに以下を追加
[mysqld]
default-character-set = utf8
character-set-server = utf8
skip-character-set-client-handshake ← 追加

早々にレンタルサーバでも試さないと。

参考サイト
http://wota.jp/ac/?date=20061011

MYSQL テーブル作成 文字コード指定

作成済みのデータベースの文字コードは
my.cnfの[mysqld]セクションで
default-character-set = utf8
としても変更出来ないようなので、
テーブル作成時に文字コードを指定するか、
作成しなおすしなかい。

データベースの文字コードを調べる
mysql> show create database データベース名;

または

mysql> status

文字コード指定してDB作成
mysql> create database データベース名; default character set utf8;

 

MySQL 文字コード確認

SHOW VARIABLES LIKE ‘char%’;

で確認できる

+————————–+—————————————————-
—–+
| Variable_name            | Value
     |
+————————–+—————————————————-
—–+
| character_set_client     | utf8
     |
| character_set_connection | utf8
     |
| character_set_database   | utf8
     |
| character_set_filesystem | binary
     |
| character_set_results    | utf8
     |
| character_set_server     | utf8
     |
| character_set_system     | utf8
     |
| character_sets_dir       | C:\Program Files\MySQL\MySQL Server 5.0\share\chars
ets\ |
+————————–+—————————————————-