编码
Linux 上修改 /etc/my.cnf。windows 上 my.ini,一般会在安装目录的根目录。
Linux 用 rpm 包安装的 MySQL 没有 /etc/my.cnf 文件,默认用 /usr/share/mysql/my-medium.cnf,复制 /usr/share/mysql 目录下的 .cnf 文件到 /etc 目录,并改名为 my.cnf 即可。
[client]
default-character-set=utf8
[mysqld]
character_set_server=utf8
character_set_client=utf8
collation-server=utf8_general_ci
[mysql]
default-character-set=utf8
查看编码,修改编码(已创建的表或库)
SHOW VARIABLES LIKE '%char%';--修改已创建数据库的字符集
alter database mydb character set 'utf8';--修改已创建数据表的字符集
alter table mytbl convert to character set 'utf8';--已经乱码数据,无论是修改 mysql 配置文件或是修改库、表字符集,都无法改变已经变成乱码的数据。--只能删除数据重新插入或更新数据才可以完全解决
大小写不敏感
Windows 系统默认大小写不敏感,但 Linux 系统是大小写敏感的
--查看
show variables like '%lower_case_table_names%'
--0 大小写敏感--1 大小写不敏感。创建的表,数据库都是以小写形式存放在磁盘上,对于 sql 语句都是转换为小写对表和 DB 进行查找--2 创建的表和 DB 依据语句上格式存放,凡是查找都是转换为小写进行
修改 my.cnf,然后重启服务器
[mysqld]
lower_case_table_names = 1
注:如果要设置属性为大小写不敏感,要在重启数据库实例之前就需要将原来的数据库和表转换为小写,否则将找不到数据库名。
时区
SQL 方式
--查看时间
SELECTNOW();--查看时区
SHOW VARIABLES LIKE '%time_zone%';--临时修改,重启 MySQL 服务后失效
SET GLOBAL time_zone='+8:00';
flushprivileges;
修改 my.cnf 方式,需重启 MySQL 服务
[mysqld]
default-time_zone = '+8:00
开启查询日志
在 my.ini 配置文件的 [mysqld] 下增加:
slow_query_log=TRUE
slow_query_log_file=/tmp/slow_query_log.txt
long_query_time=3
重启 mysql 服务,查询是否生效
show variables like '%quer%';
主从
# 保证主从一致性,建议两个都设置为 1sync_binlog
innodb_fush_log_at_trx_commit
缓存
# 建议 4M 或 8M,可以应付 sort/join/readsort/join/read/read rnd buffer
# 建议 16M 或 32M,经常产生临时表可以加大一点 128M
tmp/heap table
# 1G-2G
innodb_buffer_pool_size
其它配置
# 0.01(10毫秒)-0.1(100毫秒) 范围,记录超过时间的 SQL。设置 0,记录所有的 SQL
long_query_time
# 记录没有使用索引的 SQL,on/60,每分钟记录多少条
log_queries_not_using_indexes
log_throttle_queries_not_using_indexes
# 交互模式的超时时间,建议 300-600 秒
interactive_timeout
wait_timeout
# 表锁的超时时间,默认一年,建议 30-60 分钟
lock_wait_timeout
# 设定时区
time_zone
# 是否开启线程池
thread_handling
# 默认 75%,建议 50%
innodb_max_dirty_pages_pct
# 默认 0,不用改动
innodb_thread_concurrency
# 行锁等待时间,默认 50 秒,建议设置 5-20 秒
innodb_lock_wait_timeout
# 默认 0,不用改动
innodb_max_purge_lag
# 建议 2G/3 组
innodb_log_file_size
innodb_log_files_in_group
# innodb 最大 io
innodb_io_capacity
innodb_io_capacity_max