加入收藏 | 设为首页 | 会员中心 | 我要投稿 财气旺网 - 财气网 (https://www.caiqiwang.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql配置文件详解

发布时间:2022-09-20 15:12:59 所属栏目:MySql教程 来源:
导读:  [client]

  ?port = 3306 # 设置mysql客户端连接服务端时默认使用的端口

  socket = /tmp/mysql.sock?

  default-character-set=utf8 # 设置mysql客户端默认字符集?

  [mysql]

  
  [client]
 
  ?port = 3306 # 设置mysql客户端连接服务端时默认使用的端口
 
  socket = /tmp/mysql.sock?
 
  default-character-set=utf8 # 设置mysql客户端默认字符集?
 
  [mysql]
 
  no-auto-rehash
 
  [mysqld]?
 
  port=3306 # mysql服务端默认监听(listen on)的TCP/IP端口
 
  basedir = /usr/local/mysql # 基准路径,其他路径都相对于这个路径
 
  datadir = /etc/mysql #mysql数据库文件所在目录
 
  default-storage-engine=INNODB # 创建新表时将使用的默认存储引擎
 
  max_connections=100 # mysql服务器支持的最大并发连接数(用户数)。但总会预留其中的一个连接给管理员使用超级权限登录,即使连接数目达到最大限制。如果设置得过小而用户比较多,会经常出现“Too many connections”错误
 
  query_cache_size=512M #指定MySQL查询缓冲区的大小。可以通过在MySQL控制台观察,如果Qcache_lowmem_prunes的值非常大,则表明经常出现缓冲不够的情况;如果Qcache_hits的值非常大,则表明查询缓冲使用非常频繁,如果该值较小反而会影响效率,那么可以考虑不用查询缓冲;Qcache_free_blocks,如果该值非常大,则表明缓冲区中碎片很多
 
  query_cache_size?对于1G内存的小服务器,设个50M就可以了,不然mysql没多久就down了哈哈
 
  query_cache_limit = 2M#指定单个查询能够使用的缓冲区大小,默认1M?
 
  table_open_cache = 512 #用于设置table高速缓存的数量。由于每个客户端连接都会至少访问一个表,因此此参数的值与 max_connections有关。当某一连接访问一个表时,MySQL会检查当前已缓存表的数量。如果该表已经在缓存中打开,则会直接访问缓存中的表已加快查询速度;如果该表未被缓存,则会将当前的表添加进缓存并进行查询。在执行缓存操作之前,table_cache用于限制缓存表的最大数目:如果当前已经缓存的表未达到table_cache,则会将新表添加进来;若已经达到此值,MySQL将根据缓存表的最后查询时间、查询率等规则释放之前的缓存
 
  tmp_table_size = 64M? # 内存中的每个临时表允许的最大大小。如果临时表大小超过该值,临时表将自动转为基于磁盘的表(Disk Based Table)。
 
  thread_cache_size = 6 # 缓存的最大线程数。当客户端连接断开时,如果客户端总连接数小于该值,则处理客户端任务的线程放回缓存。在高并发情况下,如果该值设置得太小,就会有很多线程频繁创建,线程创建的开销会变大,查询效率也会下降。一般来说如果在应用端有良好的多线程处理,这个参数对性能不会有太大的提高
 
  thread_cache_size太大,mysql也会挂?
 
  1G —> 8
 
  ?2G —> 16
 
  ?3G —> 32
 
  ?>3G —> 64
 
  skip-locking#避免MySQL的外部锁定,减少出错几率增强稳定性。?
 
  skip-name-resolve#禁止MySQL对外部连接进行DNS解析,使用这一选项可以消除MySQL进行DNS解析的时间。但需要注意,如果开启该选项,则所有远程主机连接授权都要使用IP地址方式,否则MySQL将无法正常处理连接请求!
 
  back_log = 500#back_log参数的值指出在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中。 如果系统在一个短时间内有很多连接,则需要增大该参数的值mysql配置,该参数值指定到来的TCP/IP连接的侦听队列的大小。不同的操作系统在这个队列大小上有它自己的限制。 试图设定back_log高于你的操作系统的限制将是无效的。默认值为50。对于Linux系统推荐设置为小于512的整数。
 
  max_allowed_packet = 32M?
 
  thread_stack = 512K
 
  sort_buffer_size=8M # connection级参数(为每个线程配置),500个线程将消耗500*256K的sort_buffer_size
 
  join_buffer_size = 8M# 联合查询操作所能使用的缓冲区大小,和sort_buffer_size一样,该参数对应的分配内存也是每连接独享?
 
  max_connect_errors = 10000000?
 
  wait_timeout = 10#指定一个请求的最大连接时间,对于4GB左右内存的服务器可以设置为5-10。?
 
  thread_concurrency = 8#该参数取值为服务器逻辑CPU数量*2?
 
  skip-networking#开启该选项可以彻底关闭MySQL的TCP/IP连接方式,如果WEB服务器是以远程连接的方式访问MySQL数据库服务器则不要开启该选项!?
 
  binlog_cache_size = 1M# 一个事务,在没有提交的时候,产生的日志,记录到Cache中;等到事务提交需要提交的时候,则把日志持久化到磁盘。默认binlog_cache_size大小32K?
 
  max_heap_table_size = 8M# 定义了用户可以创建的内存表(memory table)的大小。这个值用来计算内存表的最大行数值。这个变量支持动态改变?
 
  transaction_isolation = REPEATABLE-READ# MySQL支持4种事务隔离级别,他们分别是:READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE.如没有指定,MySQL默认采用的是REPEATABLE-READ,ORACLE默认的是READ-COMMITTED?
 
  log-bin = mysql-bin
 
  ft_min_word_len = 4# 分词词汇最小长度,默认4?
 
  binlog_format = mixed?
 
  expire_logs_days = 30 #超过30天的binlog删除
 
  log_error = /etc/log/mysql/mysql_3306.err #错误日志路径
 
  slow_query_log = 1
 
  ?long_query_time = 1 #慢查询时间 超过1秒则为慢查询
 
  ?slow_query_log_file = /etc/mysql/slow.log?
 
  performance_schema = 0
 
  explicit_defaults_for_timestamp
 
  lower_case_table_names = 1 #不区分大小写
 
  ?skip-external-locking #MySQL选项以避免外部锁定。该选项默认开启
 
  interactive_timeout = 28800# 服务器关闭交互式连接前等待活动的秒数。交互式客户端定义为在mysql_real_connect()中使用CLIENT_INTERACTIVE选项的客户端。默认值:28800秒(8小时)?
 
  # MyISAM相关参数
 
  ?myisam_max_sort_file_size=10G # mysql重建索引时允许使用的临时文件最大大小
 
  ?myisam_sort_buffer_size=128M# MyISAM设置恢复表之时使用的缓冲区的尺寸,当在REPAIR TABLE或用CREATE INDEX创建索引或ALTER TABLE过程中排序 MyISAM索引分配的缓冲区
 
  ?key_buffer_size=256M # Key Buffer大小,用于缓存MyISAM表的索引块。决定数据库索引处理的速度(尤其是索引读)
 
  ?read_buffer_size=2M # 用于对MyISAM表全表扫描时使用的缓冲区大小。针对每个线程进行分配(前提是进行了全表扫描)。进行排序查询时,MySql会首先扫描一遍该缓冲,以避免磁盘搜索,提高查询速度,如果需要排序大量数据,可适当调高该值。但MySql会为每个客户连接发放该缓冲空间,所以应尽量适当设置该值,以避免内存开销过大。
 
  ?read_rnd_buffer_size=16M
 
  bulk_insert_buffer_size = 8M# 批量插入缓存大小, 这个参数是针对MyISAM存储引擎来说的。适用于在一次性插入100-1000+条记录时, 提高效率。默认值是8M。可以针对数据量的大小,翻倍增加?
 
  myisam_repair_threads = 1# 如果该值大于1,在Repair by sorting过程中并行创建MyISAM表索引(每个索引在自己的线程内)?
 
  # InnoDB相关参数
 
  ?innodb_additional_mem_pool_size=3M # InnoDB用于存储元数据信息的内存池大小,一般不需修改
 
  ?innodb_flush_log_at_trx_commit =1 # 事务相关参数,如果值为1,则InnoDB在每次commit都会将事务日志写入磁盘(磁盘IO消耗较大),这样保证了完全的ACID特性。而如果设置为0,则表示事务日志写入内存log和内存log写入磁盘的频率都为1次/秒。如果设为2则表示事务日志在每次commit都写入内存log,但内存log写入磁盘的频率为1次/秒。
 
  ?innodb_log_buffer_size=2M # InnoDB日志数据缓冲大小,如果缓冲满了,就会将缓冲中的日志数据写入磁盘(flush)。由于一般至少都1秒钟会写一次磁盘,所以没必要设置过大,即使是长事务。
 
  ?innodb_buffer_pool_size=105M # InnoDB使用缓冲池来缓存索引和行数据。该值设置的越大,则磁盘IO越少。一般将该值设为物理内存的80%。
 
  innodb_buffer_pool_size对于1G小服务器设个50M就好了呵呵?
 
  ?innodb_log_file_size=53M # 每一个InnoDB事务日志的大小。一般设为innodb_buffer_pool_size的25%到100%
 
  ?innodb_thread_concurrency=9 # InnoDB内核最大并发线程数。?
 
  innodb_file_per_table = 1# InnoDB为独立表空间模式,每个数据库的每个表都会生成一个数据空间# 独立表空间优点:1.每个表都有自已独立的表空间。2.每个表的数据和索引都会存在自已的表空间中。3.可以实现单表在不同的数据库中移动。4.空间可以回收(除drop table操作处,表空不能自已回收)缺点:单表增加过大,如超过100G结论:共享表空间在Insert操作上少有优势。其它都没独立表空间表现好。当启用独立表空间时,请合理调整:innodb_open_files?
 
  innodb_open_files = 500# 限制Innodb能打开的表的数据,如果库里的表特别多的情况,请增加这个。这个值默认是300?
 
  innodb_write_io_threads = 4
 
  ?innodb_read_io_threads = 4# innodb使用后台线程处理数据页上的读写 I/O(输入输出)请求,根据你的 CPU 核数来更改,默认是4注:这两个参数不支持动态改变,需要把该参数加入到my.cnf里,修改完后重启MySQL服务,允许值的范围从 1-64
 
  innodb_purge_threads = 1# InnoDB中的清除操作是一类定期回收无用数据的操作。在之前的几个版本中,清除操作是主线程的一部分,这意味着运行时它可能会堵塞其它的数据库操作。从MySQL5.5.X版本开始,该操作运行于独立的线程中,并支持更多的并发数。用户可通过设置innodb_purge_threads配置参数来选择清除操作是否使用单独线程,默认情况下参数设置为0(不使用单独线程),设置为 1 时表示使用单独的清除线程。建议为1?
 
  innodb_flush_log_at_trx_commit = 2# 0:如果innodb_flush_log_at_trx_commit的值为0,log buffer每秒就会被刷写日志文件到磁盘,提交事务的时候不做任何操作(执行是由mysql的master thread线程来执行的。主线程中每秒会将重做日志缓冲写入磁盘的重做日志文件(REDO LOG)中。不论事务是否已经提交)默认的日志文件是ib_logfile0,ib_logfile1,1:当设为默认值1的时候,每次提交事务的时候,都会将log buffer刷写到日志2:如果设为2,每次提交事务都会写日志,但并不会执行刷的操作。每秒定时会刷到日志文件。要注意的是,并不能保证100%每秒一定都会刷到磁盘,这要取决于进程的调度。每次事务提交的时候将数据写入事务日志,而这里的写入仅是调用了文件系统的写入操作,而文件系统是有 缓存的,所以这个写入并不能保证数据已经写入到物理磁盘,默认值1是为了保证完整的ACID。当然,你可以将这个配置项设为1以外的值来换取更高的性能,但是在系统崩溃的时候,你将会丢失1秒的数据。设为0的话,mysqld进程崩溃的时候,就会丢失最后1秒的事务。设为2,只有在操作系统崩溃或者断电的时候才会丢失最后1秒的数据。InnoDB在做恢复的时候会忽略这个值。总结:设为1当然是最安全的,但性能页是最差的(相对其他两个参数而言,但不是不能接受)。如果对数据一致性和完整性要求不高,完全可以设为2,如果只最求性能,例如高并发写的日志服务器,设为0来获得更高性能?
 
  innodb_log_files_in_group = 3# 为提高性能,MySQL可以以循环方式将日志文件写到多个文件。推荐设置为3?
 
  innodb_max_dirty_pages_pct = 90# innodb主线程刷新缓存池中的数据,使脏数据比例小于90%?
 
  innodb_lock_wait_timeout = 120# InnoDB事务在被回滚之前可以等待一个锁定的超时秒数。InnoDB在它自己的锁定表中自动检测事务死锁并且回滚事务。InnoDB用LOCK TABLES语句注意到锁定设置。默认值是50秒
 
  [mysqldump]?
 
  quick
 
  ?max_allowed_packet = 16M #服务器发送和接受的最大包长度
 
  [myisamchk]
 
  ?key_buffer_size = 8M
 
  ?sort_buffer_size = 8M
 
  ?read_buffer = 4M
 
  ?write_buffer = 4M?
 
  [mysqld_safe]?
 
  open-files-limit = 16384
 

(编辑:财气旺网 - 财气网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!