本文出处:http://www.cnblogs.com/wy123/p/6595556.html

MySQL变量的概念
  个人认为可以理解成MySQL在启动或者运行过程中读取的一些参数问题,利用这些参数来启动服务、响应或者支持用户的请求等

变量的配置
  如果打算长期使用,应该写入配置文件,而不是在命中指定,因为在命中设置的变量会随着MySQL服务的重启而恢复默认值
  另外要注意是设置的当前Session的变量还是全局的变量。

变量单位
  不同的变量的单位不同,比如table_cache是指缓存的表的个数,而key_buffer_size则是以字节为单位
  另外还有以页或者百分比为单位的变量
  许多变量可以通过后缀制订单位,
  比如1M表示一百万字节,在配置文件中或者在命令行下有效,
  但是在使用set命令的时候,这些单位就无效,必须使用数字,单位为字节
  比如:set @@session.sort_buffer_size = 1024*1024或者set @@session.sort_buffer_size = 1048576
  但是配置文件中设置的时候就不能使用表达式

变量的作用域 
  有些变量的作用是服务器级别的,有些是Session级别的,剩下的的一些是对象级别的。
  许多回话的变量是全局变量相等,可以为是默认值
  如果改变会话级的变量,它只影响当前Session,当前Session关闭后当前设置的参数会失效
  举例:
  query_cache_size是全局级的
  sort_buffer_size可以在全局级设置,每个Session也可以独立设置
  join_buffer_size可以在全局级设置,也可以在Session级设置,一个查询中如果有多个表关联,可以为每个关联分配一个join buffer
  除了在配置文件中设置变量之外,(部分变量)也可以在运行时修改,MySQL称之为动态配置变量
  比如: set global sort_buffer_size = 1024*1024*1024
      set sort_buffer_size = 1024*1024*1024
      set @@sort_buffer_size = 1024*1024*1024
      set @@session.sort_buffer_size = 1024*1024*1024
      set @@global.sort_buffer_size = 1024*1024*1024

常见变量的设置与获取资源说明:
  key_buffer_size
    为键缓冲区(key buffer,也叫键缓存key cache)分配所有指定的空间,
    操作系统不会为该设置立马分配内存,而是等到使用的时候才分配。
  table_cache_size
    当有线程打开表时,MySQL会检查这个标量的值,如果大于缓存中表的数量,线程可以把最先打开的表放入缓存,
    如果该值比缓存中的表数小,MySQL将从缓存中删除不常用的表
  thread_cache_size
    当有连接关闭时,MySQL检查缓存中是否还有空间来缓存线程。
    如果有:则缓存改线程已被下次连接重用
    如果没有:他讲销毁改线程而不再缓存,
    缓存中使用的线程数,不会立即减少,只有在新的连接删除缓存中的一个线程并使用后才会减少
    MySQL只在关闭连接时候才在缓冲中增减线程,在创建新的连接的时候才从缓存中删除线程
  query_cache_size
    MySQL启动的时候,一次性分配并且初始化这块内存,如果修改这个变量(即使设置为与当前值一样)
    MySQL会立刻删除所有缓存的查询,重新分配这片缓存到指定大小,并且重新初始化内存
  read_buffer_size
    MySQL只会在查询需要时才会为该缓存分配内存,并且会一次性分配改参数指定大小的全部内存
  read_rnd_buffer_size
    MySQL只会在查询需要时才会为该缓存分配内存,并且只分配需要的内存大小而不是全部指定的大小
    应该叫做,max_read_rnd_buffer_size
  sort_buffer_size
    MySQL只会在查询需要做排序操作的时候拆毁为该缓存分配内存,
    一旦需要排序,MySQL就会立刻分配给改参数指定大小的全部内存,而不管排序是否需要这么大的内存。

  由此可见,不用的变量,设置之后的启用时间,启用原理,生效方式等都是有一定差异的。

设置变量的潜在的影响
  动态设置全局变量可能会导致意外的副作用。
  某些变量改变后会立即生效,比如从缓冲中刷新赃块,从而引起服务器相应请求的一些不稳定甚至更严重的问题

MySQL系统变量配置基础的更多相关文章

  1. mysql系统变量查询

    mysql系统变量包括全局变量(global)和会话变量(session),global变量对所有session生效,session变量包括global变量.mysql调优必然会涉及这些系统变量的调整 ...

  2. mysql 系统变量和session变量

    mysql系统变量包括全局变量(global)和会话变量(session),global变量对所有session生效,session变量包括global变量.mysql调优必然会涉及这些系统变量的调整 ...

  3. MySQL系统变量sql_safe_updates总结

    MySQL系统变量sql_safe_updates总结   在MySQL中,系统变量sql_safe_updates是个非常有意思的系统变量,在Oracle和SQL Server中都没有见过这样的参数 ...

  4. MySql环境变量配置

    配置环境变量 前面步骤完成后安装好MySQL,为MySQL配置环境变量.MySQL默认安装在C:\Program Files下. 1)新建MYSQL_HOME变量,并配置:C:\Program Fil ...

  5. mysql环境变量配置(复制)

    前面步骤完成后安装好MySQL,为MySQL配置环境变量.MySQL默认安装在C:\Program Files下. 1)新建MYSQL_HOME变量,并配置:C:\Program Files\MySQ ...

  6. jdk环境变量、maven环境变量、Mysql环境变量配置

    jdk官网地址:http://www.oracle.com/index.htmlhttp://www.java.sun.com 一.配置 jdk环境变量1.新建JAVA_HOME,在变量值复制JDK安 ...

  7. MySQL环境变量配置方法

    MySQL配置方法 下载免安装版本的MySQL数据库,大家根据自己的开发环境下载对应版本的数据库,我在此举例的是Windows系统下的配置方法,下载地址如下: https://dev.mysql.co ...

  8. cmd 启动mysql环境变量配置

    win10系统:(其他系统类似,改环境变量就可以) 1.我的电脑,右键选择属性,进入系统页面 2.点击高级系统设置,进入系统属性页面 3.点击高级选项卡,点击环境变量,进入环境变量设置 4.选择系统变 ...

  9. MySQL系统变量auto_increment_increment与auto_increment_offset学习总结

    在MySQL中,系统变量auto_increment_increment与auto_increment_offset是与自增列相关的两个参数变量.在官方文档中,将其划分为Replication Mas ...

随机推荐

  1. C# 知识特性 Attribute,XMLSerialize,

    C#知识--获取特性 Attribute 特性提供功能强大的方法,用以将元数据或声明信息与代码(程序集.类型.方法.属性等)相关联.特性与程序实体关联后,可在运行时使用“反射”查询特性,获取特性集合方 ...

  2. Delphi SetParent 嵌入其他应用程序

    [代码]Delphi实现窗体内嵌其他应用程序窗体 实现原理是启动一个应用程序,通过ProcessID得到窗体句柄,然后对其设定父窗体句柄为本程序某控件句柄(本例是窗体内一个Panel的句柄),这样就达 ...

  3. Android 硬编码

    public class TextViewActivity extends Activity { // 声明TextView对象 private TextView textView; @Overrid ...

  4. Hive UDF作业

    说到这次作业,看似简单的几个步骤,对于我这样的菜鸟来说可真是一波三折啊.下面来说说这次的步骤和我遇到的问题. 首先准备工作,搭建好hive环境,保证hadoop集群是启动的.这个就不多说了. 第一步: ...

  5. .NET Core和.NET Standard

    作为.NET家族的最新成员,有很多关于.NET Core和.NET Standard的误解,以及它们于.NET Framework之间的区别.在这篇文章,我会准确的解释他们究竟是什么,并看看何时应选择 ...

  6. python hashillb 模块

    hashlib主要提供字符加密功能,将md5和sha模块整合到了一起,支持md5,sha1, sha224, sha256, sha384, sha512等算法 import hashlib # ## ...

  7. .NET C#获取当前网页地址

    摘自:https://www.cnblogs.com/vichin/p/6004249.html 设当前页完整地址是:http://www.jb51.net/aaa/bbb.aspx?id=5& ...

  8. vue2.0过滤器

    最近一阶段,项目上比较清闲,有了更多的时间可以研究一下vue了. 这里记录一下关于vue2.0过滤器的学习. vue2.0删除了所有的框架自带的过滤器,也就是说,如果你在vue2.0当中想用过滤器,那 ...

  9. 关于SqlServer2008小记(查询数据库连接数,强行干掉连接)

    查询连接数 select count(*) from master.dbo.sysprocesses 这条语句查出来的是所有连接到本机(或者连接到本服务器)的连接数,并非是某一个库的连接数. 查询连接 ...

  10. jvm 内存分配 (转)

    深入理解JVM—JVM内存模型  http://www.cnblogs.com/dingyingsi/p/3760447.html 我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区 ...