Server System Variables
该变量用于限制数据的导入导出操作,比如:
- LOAD_DATA 语句
- SELECT … INTO OUTFILE 语句
- LOAD_FILE() 语句
lower_case_table_names = 0,按照指定值存储表名,并且比较区分大小写;
lower_case_table_names = 1,表名以小写形式存储在磁盘上,并且比较不区分大小写;
lower_case_table_names = 2,按照指定值存储表名,但以小写为单位进行比较。
此选项还适用与数据库名和表别名。
在 Windows 上,默认值为 1;
在 MacOS 上,默认值为 2;
在 Linux 上,不支持值为 2,因此服务器强制将至设置为 0。
InnoDB Startup Options and System Variables
参数 | 含义 |
---|---|
innodb_file_per_table |
innodb_flush_log_at_trx_commit
参数作用:控制严格服从 ACID 与高性能之间的平衡。.
在阅读下面的文字之前,可以先了解这里。
在 MySQL 写日志的时候,可以看成两部分:
- write: 将 log buffer 的数据写入磁盘内存映射(一块由 OS 管理的区域)
- flush: 将磁盘内存映射的数据 flush 到磁盘
该参数可取 3 种值:0、1、2。
innodb_flush_log_at_trx_commit = 1
这是默认模式,严格服从 ACID。
在执行 commit 时将重做日志缓冲同步到磁盘,即伴有 fsync 的调用。
每次事务提交时 MySQL 都会执行 write + flush。
该模式是最安全的,但也是最慢的一种方式。在 mysqld 服务崩溃或者服务器主机崩溃的情况下,binary log 只有可能丢失最多一个语句或者一个事务。如果是 autocommit = 1,那么就是丢失一个语句。
innodb_flush_log_at_trx_commit = 0
当提交事务的时候,并不会将事务的重做日志写入磁盘,而是等待主线程每秒的刷新。
MySQL 每秒一次地执行 write + flush。该模式下,在事务提交的时候,不会主动触发写入磁盘的操作。
该模式速度最快,但不太安全,mysqld 进程的崩溃或者操作系统的崩溃都会导致上一秒钟所有事务数据的丢失。
innodb_flush_log_at_trx_commit = 2
将重做日志异步写到磁盘,即写道文件系统的缓冲中。
每次事务提交时 MySQL 都会执行 write,但是 flush 操作以每秒一次的频率执行。
该模式速度较快,也比 0 安全,只有在操作系统崩溃或者系统断电的情况下,上一秒钟所有事务数据才可能丢失。
相关资料可以查看:
关于 Linux 同步 IO:https://blog.csdn.net/zhouxinlin2009/article/details/89633464
参考解释:https://blog.csdn.net/u010833547/article/details/109293213
Password Validation Options and Variables
由 validate_password 强制执行的密码策略。除非安装了 validate_password,否则该变量将不起作用。
安装/启用方法,在 my.cnf 文件中添加
[mysqld]
plugin-load-add=validate_password.so
validate-password=FORCE_PLUS_PERMANENT
可以使用数字 0, 1, 2 或者 LOW, MEDIUM, STRONG 来指定 validate_password.policy 的值。对于 length 测试,所需的长度是 validate_password.length 系统变量的值。类似地,其他测试的值由其他 validate_password.xxx 变量给出。
Policy | Tests Performed |
---|---|
0 or LOW | Length |
1 or MEDIUM | Length; numeric, lowercase/uppercase, and special characters |
2 or STRONG | Length; numeric, lowercase/uppercase, and special characters; dictionary file |