快压

当前位置:首页 > 电脑技巧 > 正文

mysql优化服务器参数设置

浏览次数:|更新日期:2014年09月20日

mysql服务器为我们提供了丰富啲参数,以调整服务器满足不同环境啲要求。下面分别讨论一下这些参数:
  服务器参数变量啲设置。mysql服务器参数可在服务器启动时设置,在mysql4.0.3及以后啲版本中,有些参数也允许在线设置。在mysql4.0.2及以后de版本里,可以把一个变量名视为一个选项名来设置。如数据表缓冲区de尺寸由服务器参数talbe_cache来设置。如果需把它设置为128,则可以在命令行里增加
  –table_cache=128
  也可在选项文件中设置:
  [mysqld]
  table_cache=128
  在命令行选项中_可写-,变成:
  –table-cache=128 #这种写法更像一个标准选项
  还有一种是使用–set-variable或-o选项,如:
  –set-variable=table_cache=128
  or
  -o table_cache=128
  在选项文件中可写成:
  [mysqld]
  set-variable=table_cache=128
  服务器参数分为全局级和会话级两个级别。全局级参数将影响整个服务器,会话级参数则只影响某给定客户连接上de工作。如果某个变量同时存在于两个级别,则服务器在客户建立连接时用全局变量de值去初始化相应啲会话级参数,一旦客户连接建立起来后,对全局参数所作啲修改不会影响到相应啲会话级参数当前值。设置全局参数和会话级参数的语句:
  全局级:
  mysql> set global variable = value;
  mysql> set @@global.variable = value;
  会话级:
  mysql> set session variable = value;
  mysql> set @@session.variable = value;
  默认不带级别限定符的set语句修改的参数属会话级,如:
  mysql> set variable = value;计算机基础知识
  mysql> set @@variable = value;
  可用一条set语句设置多个参数,参数间用逗号分隔,如:
  set session variable = value1,value2,value3;
  session和local是同义语,可用local代替session,如:@@local
  具备super权限才能设置全局参数,新设置值的效力将持续到该参数被再次修改或服务器退出。设置会话级参数不用特殊的权限,新设置值的效力将持续到该值被再次修改或连接断开。显示参数的语句如下:
  show global variables;
  show global variables like test;
  show session variables;
  show session variables like test;
  如不带限定符,则返回会话级参数,如会话级参数不存在则返回全局级参数。
  也可用命令行方式显示服务器参数变量,如:
  % mysqladmin variables
  下面介绍一些mysql服务器通用的参数变量:
  back_log,当多个客户同时连接服务器时,客户处理过程需进入一个队列排队等待服务器处理。该值定义服务器等待处理队列长度的最大值,如果站点访问量大,需加大该值。电脑基础
  delayed_queue_size,在实际插入数据表前,来自insert delayed语句的数据行会进入一个队列等待服务器处理。该值定义该队列能容纳的数据行的最大个数。当队列满时,会阻塞后续的语句。加大该值能提高insert delayed语句的执行速度。
  flush_time,自动存盘间隔。如果系统经常死机或重启,把这个变量设置为一个适当的非零值,使mysql服务器每隔flush_time称去刷新一次数据表缓冲区,将其中的信息写入磁盘。这将导致系统性能下降,但可减少数据表被破坏或丢失数据的概率。在命令行上用–flush选项启动服务器可使数据表在每次修改后被自动存盘。
  key_buffer_size,用来容纳索引块的缓冲区的长度。加大该值可加快索引创建和修改操作的速度,该索引缓冲区越大,在内存中找到键值的可能性就越大,读盘次数就越少。mysql3.23前的版本里,该参数叫key_buffer。3.23版本之后,两种叫法都可以。
  max_allowed_packet,服务器与客户程序之间通信时使用的缓冲区在最大值。mysql 4版本之前,该最大值可取16mb,mysql 4版本以后,该值的最大值是1gb。如果客户端与服务器需传送大容量的数据,如blob或text值,就要加大该值。客户端也有一个同名的变量,默认是16mb,该值也要加大。客户端的启动命令为:
  % mysql –set-variable=max_allowed_packet=64m
  max_connections,允许同时打开的连接数,如果站点繁忙,需加大该值。
  table_cache,数据表缓存区的尺寸。加大该值可使服务器能够同时打开更多的数据表,从而减少文件打开/关闭操作的次数。
  注意:加大max_connections和table_cache参数的值,会使服务器占用更多的文件描述符。运行多个服务器可绕过该限制。对一些分配给每个客户的资源变量,设置时不能过大,因为当连接数快速增长时会很快耗尽服务器的资源,造成服务器性能下降。计算机
  innodb处理程序变量:
  innodb_buffer_pool_size,innodb数据库缓冲池的大小,如果有足够的内存,可把该值设置得大些以减少读盘操作。
  innodb_log_file_size和innodb_log_files_in_group,前者设置日志文件的长度,后者设置日志文件的个数。innodb日志文件的总长度是两者的乘积,它的总长度不得超过4gb。