深入理解mysql参数

发表于:2014-9-02 10:44

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:wzq609    来源:51Testing软件测试网采编

  4、参数的修改,参数的修改有以下几种方法,作为学习、便于理解其中的原理所在,这里把几种方法都整理出来了,欢迎各位的查看
  方法一、修改参数文件。所有的参数都保存在/etc/my.cnf文件中,所以直接修改该参数文件便可修改相应的系统参数。
  弊端:修改该参数需要重启后才能生效,当系统上线后一般都不能随便重启,所以该方法很少用;
  操作方法:
  1、修改参数文件/etc/my.cnf,添加general_log_file = /data/mysql/mysql_2.logvi  /etc/my.cnf
# The MySQL server
[mysqld]
port            = 3306
socket          = /tmp/mysql.sock
skip-external-locking
key_buffer_size = 384M
max_allowed_packet = 1M
table_open_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 32M
# Try number of CPU's*2 for thread_concurrency
thread_concurrency = 8
general_log_file = /data/mysql/mysql_2.log
  2、重启mysql服务
  service mysqld stop
  3、检查参数是否生效
  mysql> show variables like 'general%';
  +------------------+-------------------------+
  | Variable_name    | Value                   |
  +------------------+-------------------------+
  | general_log      | OFF                     |
  | general_log_file | /data/mysql/mysql_2.log |
  +------------------+-------------------------+
  2 rows in set (0.00 sec)
  当前显示已生效
  方法二、如果是动态参数的话,便可以直接通过语句修改。
  (http://dev.mysql.com/doc/refman/5.6/en/dynamic-system-variables.html mysql的所有参数详情介绍
  sql语法:
  SET variable_assignment [, variable_assignment] ...      //可以同时修改多个参数
  variable_assignment:
  user_var_name = expr
  | [GLOBAL | SESSION] system_var_name = expr
  | @@[global. | session.]system_var_name = expr
  例子:
  SET sort_buffer_size=10000;   /修改SESSION参数
  SET @@local.sort_buffer_size=10000;   /修改全局参数
  SET GLOBAL sort_buffer_size=1000000, SESSION sort_buffer_size=1000000;   /同时修改多个SESSION参数
  SET @@sort_buffer_size=1000000; /第二种修改全局参数的方法
  SET @@global.sort_buffer_size=1000000, @@local.sort_buffer_size=1000000;
  说明如下:
  1)修改SESSION的参数的影响:如果您使用SESSION(默认情况)设置一个系统变量,则该值仍然有效,直到当前会话结束为止,或者直到您把变量设置为一个不同的值为止。
  2)如果您使用GLOBAL(要求SUPER权限)来设置一个系统变量,则该值被记住,并被用于新的连接,直到服务器重新启动为止。
  如果您想要进行永久式变量设置,需要写入到参数文件。(通过SET命令并不会修改参数文件的内容,还需要另行修改,这点做的没有ORACLE好)
  3)为了防止不正确的使用,如果您使用SET GLOBAL时同时使用了一个只能与SET SESSION同时使用的变量,或者如果您在设置一个全局变量时未指定GLOBAL(或@@),则MySQL会产生一个错误。( SET GLOBAL命令修改SESSION参数的时候会报错)
  4)如果您想要把一个SESSION变量设置为GLOBAL值或把一个GLOBAL值设置为内部MySQL默认值,需使用DEFAULT关键词。例如,在把max_join_size会话值设置为全局值时,以下两个语句是一样的:SET max_join_size=DEFAULT;(恢复成默认值的设置)
  总结:1、mysql的参数设置相对oracle来说较为简单。
  2、针对参数设置的方法本身没有太多经验,作为一个DBA不管是修改oracle参数、或mysql参数,建议每个数据库都有一个文档用于记录参数修改的历史,这样哪台出现了问题,便于跟踪;
22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号