(1)参数配置文件中的内容以键值对形式存在。
(2)如何查看键值对?show variables like '%name%';或者查看information_schema库下的global_variables视图;
如何修改呢?
1、innodb_buffer_pool_size=5G
2、客户端连接数据库的最大连接数:。通常,mysql的最大连接数默认是151, 最大可以达到16384。
>>show variables like '%max_connections%';
>>set global max_connections=200。
>>my.ini文件中设置:max_connects = 200
3、如果mysql服务器开启了二进制日志文件bin-log,那么我们必须为我们的function指定DETERMINISTIC, NO SQL 和 READS SQL DATA 。否则备份导入异常。
解决方案一:
>> show variables like 'log_bin_trust_function_creators';
>> set gloable log_bin_trust_function_creators=true;
在mysql的配置文件中添加log_bin_trust_function_creators=true
解决方案二:
在定义函数时,添加必要的说明。
4、配置二进制日志文件:在mysql5.7中的my.ini文件中的mysqld项下添加如下三个选项。
log_bin=ON
log-bin=C:/ProgramData/MySQL/MySQL Server 5.7\Data\sdxsBinaryLog
binlog-ignore-db = mysql,information_schema
5、thread_cache_size=64,该参数一般与服务器物理内存有关,1G时设置成8,2G---16,3G--32,4G--64。默认值是10,显然在一般的服务器中就不合适。
6、查询缓存配置:MYSQL的查询缓存用于缓存select查询结果,并在下次接收到同样的查询。请求时,不再执行实际查询处理而直接返回结果。有这样的查询缓存能提高查询的速度,
使查询性能得到优化,前提条件是你有大量的相同或相似的查询,而很少改变表里的数据,否则没有必要使用此功能。可以通过Qcache_lowmem_prunes变量的值来检查是否当前的值满足你目前系统的负载。
注意:如果你查询的表更新比较频繁,而且很少有相同的查询,最好不要使用查询缓存。当有大量的查询和大量的修改时,cache机制可能会造成性能下降。因为每次修改会导致系统去做cache失效操作。
1)query_caceh_type=0/1/2。表示查询缓存是否开启,分别代表不开启,始终开启,按需开启。默认不开启。如果设置为1,将会缓存所有的结果,
除非你的select语句使用SQL_NO_CACHE禁用了查询缓存;如果设置为2,则只缓存在select语句中通过SQL_CACHE指定需要缓存的查询。
启用查询缓存,只要查询语句中添加了参数:sql_cache,且符合查询缓存的要求,客户端的查询语句和记录集,则可以缓存起来,共其他客户端使用。
query_cache_size
8、innodb_buffer_pool_size=12G。发现这个参数在高并发高I/O时正确的配置非常重要,可能带来很大的性能提升。
innodb_buffer_pool_size参数表示缓冲池字节大小,InnoDB缓存表和索引数据的内存区域
该值一般设置成总内存的70%到80%。用于缓存索引和数据的内存大小,
这个当然是越多越好, 数据读写在内存中非常快, 减少了对磁盘的读写。
最大值与你的CPU体系结构有关,在32位操作系统,最大值是 4294967295 (2^32-1) ,在64 位操作系统,最大值为18446744073709551615 (2^64-1)。
在32位操作系统中,CPU和操作系统实用的最大大小低于设置的最大值。如果设定的缓冲池的大小大于1G,设置innodb_buffer_pool_instances的值大于1,
在服务器繁忙的时候可以提高伸缩性,不过在实际的测试中,发现带来的性能提升并不明显,初步设置innodb_buffer_pool_instances为1。
innodb_buffer_pool_instances=8 在很小的 buffer_pool 大小时有很大的不同,而使用大的buffer_pool时,innodb_buffer_pool_instances=1的表现最棒。
这是你安装完InnoDB后第一个应该设置的选项。缓冲池是数据和索引缓存的地方:这个值越大越好,这能保证你在大多数的读取操作时使用的是内存而不是硬盘。
典型的值是5-6GB(8GB内存),20-25GB(32GB内存),100-120GB(128GB内存)。建议使用物理内存的 75%。
9、innodb_buffer_pool_instances=8。可以开启多个内存缓冲池,把需要缓冲的数据hash到不同的缓冲池中,这样可以并行的内存读写。
等于8是默认值,当设置大的innodb_buffer_pool_size时,该值设置成1最佳。大概一个1G的innodb_buffer_pool_size对应一个instance。12G的buffer pool,那么instances有10
10、innodb_buffer_pool_chunk_size。MySQL 5.7.5后Innodb_buffer_pool_size一方面可以动态分配。但另一方面也引入了一个新特性。
bp分配必须是innodb_buffer_pool_chunk_size的倍数。
同时最好是:innodb_buffer_pool_chunk_size*innodb_buffer_pool_instances默认是128M。
11、innodb_log_file_size=1024M。设置单个innodb日志文件的大小。默认情况下,InnoDB 使用两个值。
12、max_connections=10000。
13、max_allowed_packet = 16M。mysql根据配置文件会限制server接受的数据包大小。有时候大的插入和更新会受max_allowed_packet 参数限制,导致写入或者更新失败。
mysql默认接受data最大是1M,也就是超过了就会失败。
14、sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'。不然,在给char类型的字段插入值时,如果超过255个字符就会报错。
sql_mode的默认值是:'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
15、