mysql常见的一些配置项

MySQL 有许多配置选项,可以用来调整其行为以满足特定的需求。以下是一些常见的配置选项,除了大小写敏感之外,这些配置选项也经常被调整:

1. 字符集和排序规则

  • character_set_server: 设置服务器的默认字符集。
  • collation_server: 设置服务器的默认排序规则。
  • character_set_client: 设置客户端发送给服务器的字符集。
  • character_set_connection: 设置连接层的字符集。
  • character_set_results: 设置结果集的字符集。

2. 缓冲区和缓存

  • innodb_buffer_pool_size: InnoDB 缓冲池的大小,用于缓存数据和索引页。
  • query_cache_size: 查询缓存的大小,用于缓存 SELECT 查询的结果。
  • key_buffer_size: MyISAM 表的键缓冲区大小。
  • sort_buffer_size: 为每个需要进行排序的线程分配的缓冲区大小。
  • read_buffer_sizeread_rnd_buffer_size: 用于全表扫描和排序扫描的缓冲区大小。

3. 日志和恢复

  • log_bin: 启用二进制日志,用于复制和恢复。
  • binlog_format: 二进制日志格式,可以是 STATEMENT, ROW, 或 MIXED
  • expire_logs_days: 二进制日志自动删除的时间(天数)。
  • innodb_log_file_size: InnoDB 事务日志文件的大小。
  • innodb_flush_log_at_trx_commit: 控制事务提交时日志刷新的行为。

4. 连接和线程

  • max_connections: 允许的最大并发连接数。
  • thread_cache_size: 线程缓存的大小,用于快速响应新连接。
  • wait_timeout: 服务器关闭非交互连接之前等待活动的秒数。
  • interactive_timeout: 服务器关闭交互连接之前等待活动的秒数。

5. 性能优化

  • skip_name_resolve: 禁用 DNS 解析,提高连接速度。
  • table_open_cache: 打开表的缓存大小。
  • tmp_table_size: 内存中临时表的最大大小。
  • max_heap_table_size: 内存表的最大大小。
  • join_buffer_size: 用于全连接操作的缓冲区大小。

6. 安全性

  • secure-file-priv: 限制 LOAD DATA 和 SELECT … INTO OUTFILE 操作的目录。
  • local-infile: 控制是否允许客户端使用 LOAD DATA LOCAL 语句。
  • old_passwords: 控制是否使用旧的密码哈希算法。

7. 存储引擎

  • default_storage_engine: 默认的存储引擎,例如 InnoDBMyISAM
  • innodb_file_per_table: 每个 InnoDB 表使用单独的文件。

8. 其他

  • lower_case_table_names: 控制表名是否转换为小写(Windows 上默认为 1,Linux 上默认为 0)。
  • datadir: 数据文件的存储目录。
  • socket: 本地客户端连接使用的 Unix 域套接字文件。
  • port: MySQL 服务器监听的 TCP/IP 端口号。

配置文件

这些配置选项通常在 MySQL 的配置文件 my.cnfmy.ini 中设置。配置文件的位置可能因操作系统和安装方式而异,常见的位置包括:

  • /etc/my.cnf
  • /etc/mysql/my.cnf
  • /etc/mysql/mysql.conf.d/mysqld.cnf
  • C:\ProgramData\MySQL\MySQL Server X.X\my.ini (Windows)

示例配置

以下是一个简单的 my.cnf 示例,展示了如何设置一些常用的配置选项:

[mysqld]
# 基本设置
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
port=3306

# 字符集
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci

# 缓冲区和缓存
innodb_buffer_pool_size=1G
query_cache_size=0
key_buffer_size=16M
sort_buffer_size=2M
read_buffer_size=2M
read_rnd_buffer_size=8M

# 日志和恢复
log_bin=mysql-bin
binlog_format=row
expire_logs_days=7
innodb_log_file_size=512M
innodb_flush_log_at_trx_commit=1

# 连接和线程
max_connections=150
thread_cache_size=10
wait_timeout=28800
interactive_timeout=28800

# 性能优化
skip_name_resolve=ON
table_open_cache=2000
tmp_table_size=16M
max_heap_table_size=16M
join_buffer_size=2M

# 安全性
secure-file-priv=/var/lib/mysql-files
local-infile=0

# 存储引擎
default_storage_engine=InnoDB
innodb_file_per_table=ON
上一篇:TOSHIBA 74VHC00FT COMS汽车、工业企业的选择


下一篇:《Java 实现堆排序:深入理解与代码剖析》