时间:2021-07-01 10:21:17 帮助过:21人阅读
我的是默认lower_case_file_system=OFF,lower_case_table_name=0,表示文件系统和表名都是区分大小写的。
注:(以***释来自网上)
MYSQL在LINUX下数据库名、表名、列名、别名大小写规则如下:
1.数据库名与表名是严格区分大小写的
2.表的别名是严格区分大小写的
3.列名与列的别名在所有的情况下均是忽略大小写的
4.变量名也是严格区分大小写的
3)max_allowed_packet
value:16777216
最大接收包的大小(可以理解为指令集大小)
修改方法1) 方法1可以编辑my.cnf来修改(windows下my.ini),在[mysqld]段或者mysql的server配置段进行修改。
max_allowed_packet = 20M如果找不到my.cnf可以通过mysql --help | grep my.cnf去寻找my.cnf文件。
2) 方法2 进入mysql server在mysql 命令行中运行set global max_allowed_packet = 2*1024*1024*10然后关闭掉这此mysql server链接,再进入。show VARIABLES like ‘%max_allowed_packet%‘;查看下max_allowed_packet是否编辑成功
4)max_binlog_cache_size
max_binlog_cache_size 表示的是binlog 能够使用的最大cache 内存大小
当我们执行多语句事务的时候 所有session的使用的内存超过max_binlog_cache_size的值时
就会报错:“Multi-statement transaction required more than ‘max_binlog_cache_size‘ bytes ofstorage”
5)max_binlog_size
二进制日志最大大小
当停止或者重启时,服务器会把日志文件记入下一个日志文件,Mysql会在重启时生成一个新 的日志文件,文件序号递增,此外,如果日志文件超过max_binlog_size系统变量配置的上限时,也会生成新的日志文件,不定期处理的话长期以往硬盘扛不住。。
mysql提供了mysqlbinlog命令来查看日志文件,如mysqlbinlog xxx-bin.001 | more。在记 录每条变更日志的时候,日志文件都会把当前时间给记录下来,以便进行数据库恢复。
通过SET SQL_LOG_BIN的值来设定是否启用日志。
数据恢复:
如果遇到灾难事件,应该用最近一次制作的完整备份恢复数据库,然后使用备份之后的日志 文件把数据库恢复到最接近现在的可用状态。 使用日志进行恢复时需要依次进行,即最早生成的日志文件要最先恢复:
mysqlbinlog xxx-bin.00001 | mysql –u root –p
mysqlbinlog xxx-bin.00002 | mysql –u root –p
日志:(以***释来自网上)
1、MySQL日志文件系统的组成
a、错误日志:记录启动、运行或停止mysqld时出现的问题。
b、通用日志:记录建立的客户端连接和执行的语句。
c、更新日志:记录更改数据的语句。该日志在MySQL 5.1中已不再使用。
d、二进制日志:记录所有更改数据的语句。还用于复制。
e、慢查询日志:记录所有执行时间超过long_query_time秒的所有查询或不使用索引的查询。
f、Innodb日志:innodb redo log
查看日志:mysqlbinlog [options] log_file ...
例如,要显示名字为binlog.000003的日志文件,按如下方式调用即可:mysqlbinlog binlog.000003。提供了mysqlbinlog命令来查看日志文件,如mysqlbinlog xxx-bin.001 | more。在记录每条变更日志的时候,日志文件都会把当前时间给记录下来,以便进行数据库恢复。
注意在进行数据恢复的时候要按文件顺序来恢复。
6)max_binlog_stmt_cache_size
max_binlog_stmt_cache_size 这个值load data导入超大的文件(10G以上)必须要加大。
7)max_connections
实际MySQL服务器允许的最大连接数;
8)max_connect_errors
当客户端连接服务端超时(超过connect_timeout), 服务端就会给这个客户端记录一次error,当出错的次数达到max_connect_errors的时候,这个客户端就会被锁定。除非执行FLUSH HOSTS命令,建议:能设多大就设多大
9)max_delayed_thread 其实与max_insert_delayed_thread数目同
设定最大启动线程来处理INSERT DELAYED语句也就是可以启动的最大处理insert delayed的数量
10)max_error_count
运行出现的最大错误总数
11)max_tmp_tables:
它规定了内部内存临时表的最大值,每个线程都要分配。(实际起限制作用的是tmp_table_size和max_heap_table_size的最小值。)如果内存临时表超出了限制,MySQL就会自动地把它转化为基于磁盘的MyISAM表,存储在指定的tmpdir目录下,
默认:mysql> show variables like "tmpdir";
优化查询语句的时候,要避免使用临时表,如果实在避免不了的话,要保证这些临时表是存在内存中的。如果需要的话并且你有很多group by语句,并且你有很多内存,增大tmp_table_size(和max_heap_table_size)的值。
12)max_heap_table_size
这个变量定义了用户可以创建的内存表(memory table)的大小.这个值用来计算内存表的最大行数值。这个变量支持动态改变,即set @max_heap_table_size=#,但是对于已经存在的内存表就没有什么用了,除非这个表被重新创建(create table)或者修改(alter table)或者truncate table。服务重启也会设置已经存在的内存表为全局max_heap_table_size的值。这个变量和tmp_table_size一起限制了内部内存表的大小。
13)max_insert_delayed_thread
Innodb提供有insert buffer以批量操作减少IO(最新版本扩充为change buffer),MyISAM也有类似功能,称作insert delayed,即延迟提交;延迟插入的记录保存在内存中,如果此时断电则会丢失,当新插入行不立即被查询时可用此功能提升IO;
设定最大启动线程来处理INSERT DELAYED语句也就是可以启动的最大处理insert delayed的数量
14)max_join_size
允许读取的连接的数量
15)max_length_for_sort_data
mysql有两种文件排序算法(双路排序和单路排序),如果需要排序的列的总大小加上order by列的大小超过了 max_length_for_sort_data定义的字节,mysql就会使用双路排序。
可以通过改变 max_length_for_sort_data变量的值来影响mysql选择的算法。因为单路排序为将要排序的每一行创建了固定的缓冲区,varchar列的最大长度是 max_length_for_sort_data规定的值,而不是排序数据的实际大小。
双路排序:(以***释来自网上)
读取行指针和order by列,对他们进行排序,然后扫描已经排序好的列表,按照列表中的值重新从列表中读取对应的数据输出。
双路排序的开销可能会非常巨大,因为他会读取表两次,第二次读取会引发大量的随机IO,对于myisam涞说,这个代价尤其昂贵,myisam表利用系统调用去提取每行的数据。
单路排序:
读取查询需要的所有列,按照order by 列对他们进行排序,然后扫描排序后的列表进行输出,它的效率更快一些,避免了第二次读取数据。并且把随机IO变成了顺序IO,但是它会使用更多的空间,因为它把每一行都保存在内存中了。
16)max_long_data_size
最大输入数据的长度
17)max_prepare_stmt_count
最大预处理命令数目,该变量设置预处理语句限制数。这个功能能防止拒绝服务攻击,因为攻击可以通过大量的预处理语句致使服务器内存溢出来攻击。设置此变量就是一道安全屏障,此变量对原有的预处理语句不影响,但若是预处理语句的数量超过该变量的值,则不会新增预处理语句,而是等到预处理语句的值小于max_prepared_stmt_count的值才增加新语句。
18)max_relay_log_size
标记relay log 允许的最大值,如果该值为0,则默认值为max_binlog_size(1G);如果不为0,则max_relay_log_size则为最大的relay_log文件大小;
区别是:从服务器I/O线程将主服务器的二进制日志读取过来记录到从服务器本地文件,然后SQL线程会读取relay-log日志的内容并应用到从服务器。
19)max_seeks_for_key
查询时最大搜索的key的个数,可以用来查询优化,启动 mysqld 时使用参数 --max-seeks-for-key=1000 或者执行 SET max_seeks_for_key=1000 来告诉优化程序,所有的索引都不会导致超过1000次的索引搜索。总之:建议这个值设定的小一点。
20)max_sort_length
在排序blob或者text时使用的字节数量
21)max_sp_recursion_depth
mysql递归型存储的最大深度
22)max_user_connections
是 MySQL 用户连接数的最大值设置,默认为0意思为无限制
23)max_write_lock_count
最大写锁的数量
24)max_metadata_locks_count
设定mysqld元数据锁缓存的上限。此缓存可用来避免创建或销毁同步对象(synchronization object)。
25)min_examined_row_limit
这也是判断一个查询是否是慢查询的一个变量, 若查询的结果集行数大于min_examined_row_limit值,则查询被当作慢查询写入慢查询日志。
26)multi_range_count
设定查询语句中range范围最大个数,这个变量没什么用。
27)myisam-data-pointer-size
默认指针大小,单位是字节, MAX_ROWS不指定时,CREATE TABLE使用该变量创建MyISAM表。默认值是6。值域:2~7
28)myisam-max-sort-file-size
当用到REPAIRTABLE, ALTER TABLE, LOAD DATA INFILE的时候,相应的索引会被重建,然后要用到临时文件,此变量就是设置临时文件大小的。如果索引文件大小比此值小,系统则调用速度更慢的键值创建索引。
官网建议:如果MyISAM索引文件大于2G且硬盘空间允许,增大该值可以提高性能。注意的是增加的空间是包含原来索引文件空间的。
29)myisam-mmap-size
Mmp:memorymapping 内存映射
设置使用内存映射压缩MyISAM表文件的最大内存量的变量。
如果许多压缩MyISAM表使用,可以通过降低该值来减低内存交换问题出现的可能性。
30)myisam_recover_options
设置MyISAM存储模式,它的值可以是OFF, DEFAULT, BACKUP, FORCE, QUICK任意组合,组合值则用‘,’隔开。
默认是backup。
若非OFF的话,表示每次打开MyISAM表都检查表是否崩溃或者非正常保存,否则和尝试修复表。
修复按照值选项而定:
OFF:关闭
DEFAULT:修复中没有BACKUP, FORCE,QUICK
BACKUP:如果修复过程中用户修改数据,则把“表名.MYD”文件备份成“表名-时间.BAK”文件
FORCE:继续修复数据即便是丢失大量数据
QUICK:不检查表中的行,如果没有任何删除块。
还有的是,修复之前,mysql会在错误日志中写入note,这个note关于修复的。
官网建议:如果想在不受用户打扰的情况下修复数据,则设置为“BACKUP, FORCE”。这样的话,就强制修复即便有人删除数据,修复完了还可以用备份数据查看发生情况。
31)myisam_repair_threads
myisam_repair_threads=1 则在repairby sort时,MyISAM表索引在各自线程中并发创建。
32)myisam_sort_buffer_size
REPAIR TABLE或在 CREATEINDEX 和 ALTER TABLE创建索引的时候,.给分配的缓冲区的大小。
33)myisam_stats_method 默认: nulls_unequal
该变量告诉服务器,在服务器收集有关MyISAM表的索引值的分布统计时如何处理NULL值。变量可选三个值:nulls_equal,nulls_unequal, nulls_ignored.
Nulls_equal 时,所有null值都被当成一样,形成一个大小是null值个数的单值组。
nulls_unequal时,null被认为是不一样的(尽管我们看来是一样),每个null形成一个大小为1的不同值组。
nulls_ignored时,值被忽略
PS:至于为什么要这样区别对待,这里有讲解http://www.phpben.com/?post=69
34)myisam_use_mmap
这个变量开启的话,就利用内存映射来读和写myisam表,默认是关闭的OFF,一般内存不是很大的情况下是不会开启这一项
35)net_buffer_length
XXX TCP/IP和套接字通信缓冲区大小,设定的大一点可以加快导入速度。
36)net_read_timeout
在终止读之前,从一个连接获得数据而等待的时间秒数;当服务正在从客户端读取数据时,net_read_timeout控制何时超时。这个参数在连接繁忙阶段(query)起作用。
37)slave_net_timeout
当slave认为连接master的连接有问题时,就等待N秒,然后断开连接,重新连接master
38)net_write_timeout
在终止写之前,等待多少秒把block写到连接;当服务正在写数据到客户端时,net_write_timeout控制何时超时,这个参数在连接繁忙阶段(query)起作用。
39)wait_timeout
与服务器端无交互状态的连接,直到被服务器端强制关闭而等待的时间,在连接空闲阶段(sleep)起作用
40)interactive_timeout
与服务器端无交互状态的连接,直到被服务器端强制关闭而等待的时间,在连接空闲阶段(sleep)起作用
41)connect_timeout
等待一个连接响应的时间,在获取连接阶段(authenticate)起作用
42)net_retry_count
如果读或写一个通信端口中断,mysql放弃前尝试连接的次数。
43) new
该变量用于mysql4.0启用mysql4.1一些新功能,和为了保持向后兼容性。在mysql5.6中,这个变量的值都是OFF。
44) old
Old是兼容性变量。默认被禁用(OFF),在旧版本的服务器可以通过重启服务器时启用。
目前,old被启用时,它改变使用索引提示的默认范围到MySQL5.1.17之前。也就是说,没有FOR子句仅适用于如何使用索引检索行,而不是解决ORDER BY或GROUP BY子句的索引提示。在复制设置启用这个变量时要注意些,基于语句的二进制日志,主从服务器有不同的模式可能会导致复制错误。
45)old_alter_table 默认OFF
当该变量被启用,则mysql服务器不会使用alerttable 优化方法。在mysql5.0和更早版本,先用个临时表,复制数据进去,然后重命名到原始的临时表。