(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,且符合查询缓存的要求,客户端的查询语句和记录集,则可以缓存起来,共其他客户端使用。
2)query_cache_size=64M。表示给缓存分配的最大内存空间。将query_cache_size
设置为具体的大小,具体大小是多少取决于查询的实际情况,但最好设置为1024的倍数,参考值32M。
启用查询缓存,只要查询语句中添加了参数:sql_cache,且符合查询缓存的要求,客户端的查询语句和记录集,则可以缓存起来,共其他客户端使用;
允许设置query_cache_size的值最小为40K,对于最大值则可以几乎认为无限制,实际生产环境的应用经验告诉我们,该值并不是越大, 查询缓存的命中率就越高,
也不是对服务器负载下降贡献大,反而可能抵消其带来的好处,甚至增加服务器的负载,至于该如何设置,下面的章节讲述,推荐设置 为:64M;
3)query_cache_limit=1M。限制查询缓存区最大能缓存的查询记录集,可以避免一个大的查询记录集占去大量的内存区域。
4)query_cache_min_res_unit=4K。设置查询缓存分配内存的最小单位,要适当地设置此参数,可以做到为减少内存块的申请和分配次数,但是设置过大可能导致内存碎片数值上升。默认值为4K,建议设置为1k~16K
5)query_cache_wlock_invalidate=0。该参数主要涉及MyISAM引擎,若一个客户端对某表加了写锁,其他客户端发起的查询请求,且查询语句有对应的查询缓存记录,
是否允许直接读取查询缓存的记录集信息,还是等待写锁的释放。默认设置为0,也即允许;
6)清空查询缓存的数据:FLUSH TABLES;RESET QUERY CACHE;
7)碎片整理的操作语句:FLUSH QUERY CACHE;
7、开启了bin-log后需要设置:log-bin-trust-function-creators=1。否则出现下面1418错误。
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、