0

0

MySQL里的变量分系统变量和用户变量_MySQL

php中文网

php中文网

发布时间:2016-06-01 13:29:59

|

1808人浏览过

|

来源于php中文网

原创

bitsCN.com

mysql里的变量分系统变量和用户变量

 

mysql里的变量分系统变量和用户变量.

  系统变量

  其中系统变量,又分全局(global)和会话(session)两种.

  全局系统变量,主要影响整个mysql实例的全局设置.

  大部分变量都是作为mysql的服务器调节参数存在.新增或修改这类变量, 会影响mysql的运行方式.

  比如: auto_increment_increment 代表序列的自增值, 默认为1

  另外, mysql中,只有一部分变量是支持运行时动态修改的.

  变量修改的作用范围,是那些重新创建连接到mysql服务器的客户端连接.

  如果你的连接是由应用通过连接池来维护的,并且,是长连接的,那么,此时在服务器运行过程中,动态地修改全局变量对你是没有什么影响的.

  通过全局变量, 我们可以想到一些应用场景:

  1, 在存储过程, 函数, sql里,使用一些业务相关的全局变量.

  经常编写业务相关的存储过程,函数的朋友, 可能会需要针对不同业务,设置能共享访问的全局变量.

  比如, 公司的总人数,很多存储过程都需要调用这个值,但是因为这个值,不是经常会改变的,不需要每次都count.

  所以大多数人会考虑把它cache一把,那么mysql提供的全局变量,就是一个好的存储场所.

  2, 数据库配置中心

  首先,这不一定是一种好的解决方式, 特别是大型地分布式系统.但是想到了,就跟大家分享一下.

  主要就是利用了三层,四层架构的系统, 必不可少的数据库层来实现的.

  大家知道, 应用的配置, 大多数是用配置文件或配置服务器来实现, 前者需要跟着项目打包, 部署.

  后者, 只要在应用初始化或运行时,去配置中心取配置就行了.(淘宝这边两者都在用)

  而数据库的配置中心, 其实类似配置服务器, 只不过灵活运用了mysql的变量机制.

  它能继承配置服务器的多数优点, 但最大的特色就是在 sql, function , procedure 里都可以很方便地引用到.(相比用表的方式, 要方便一些)

  并且本身就具有缓存, 移植得话, mysql得导出也是很快.

  所以小系统, 想快速得搭建一个配置中心,利用mysql感觉还是不错的.

  调用语法:

  select * from user_info where id = @@global.admin_id — 例子,通过全局里配置的管理员id来取用户信息

  以下是全局变量的一些常用命令,比较简单:

  set global auto_increment_increment=1; — 设置序列的增长值

  show global variables; — 显示所有的global变量

  show global variables like ‘%test%’ — 查询包含test字符串的global变量

  会话系统变量, 主要用于在当前客户端连接的生命周期内.它的变量值是全局变量的一份拷贝.

  如果连接断开, 对当前会话变量所做修改都会被重置.

  比如, 服务器会话变量 autocommit 默认为 true , 而你在非常连的客户端连接里设置了 false , 那么在执行完sql后, 连接就会断开. 此后,如果创建新的连接来执行sql, autocommit又会默认 true.

  会话变量的使用场景与全局类似,只是生命周期不同, 因此可以用来

  统计同一连接内请求sql次数, sql类型等信息.

  session变量的一些常用操作:

  set session auto_increment_increment=1; — 设置序列的增长值

  show variables; or show session variables; — 如果不指明, 默认使用session变量

  show variables like ‘%test%’ or show session variables lile ‘%test%’ — 查询包含test字符串的session变量

 

用户变量

  基于会话变量实现的, 可以暂存值, 并传递给同一连接里的下一条sql使用的变量.

  当客户端连接退出时,变量会被释放.

  应用场景:

  同一连接,未关闭情况下,帮你暂存一些计算结果.

  比如

  select @admin_id:=max(id) from user_info;

  select * from user_info where id = @admin_id

  以上两条sql在同一connection中完成.

  另外,注意,用户变量前只有1个@, 2个@是用于存取系统变量的

云点滴客户关系管理CRM OA系统
云点滴客户关系管理CRM OA系统

云点滴客户解决方案是针对中小企业量身制定的具有简单易用、功能强大、永久免费使用、终身升级维护的智能化客户解决方案。依托功能强大、安全稳定的阿里云平 台,性价比高、扩展性好、安全性高、稳定性好。高内聚低耦合的模块化设计,使得每个模块最大限度的满足需求,相关模块的组合能满足用户的一系列要求。简单 易用的云备份使得用户随时随地简单、安全、可靠的备份客户信息。功能强大的报表统计使得用户大数据分析变的简单,

下载

  业务相关的变量定义太多,无法区分系统全局变量?

  这类问题,可以通过mysql提供的结构化系统变量来解决.

  他们有独特的表示形式:

  instance_name.test_var

  比一般的变量多了一个instance_name.这样,你就可以很方便地对他们进行分类,比如 app.test_var,就可以区别于系统的var了.

  PS: 其实,普通的系统变量,它也属于结构化变量,只不过他们默认隶属于 default 这个 instance, 不需要显示出来罢了.

  影响mysql性能的系统变量

  bulk_insert_buffer_size

  批量插入缓存大小, 这个参数是针对MyISAM存储引擎来说的.适用于在一次性插入100-1000+条记录时, 提高效率.默认值是8M.可以针对数据量的大小,翻倍增加.

  concurrent_insert

  并发插入, 当表没有空洞(删除过记录), 在某进程获取读锁的情况下,其他进程可以在表尾部进行插入.

  值可以设0不允许并发插入,1当表没有空洞时,执行并发插入,2.不管是否有空洞都执行并发插入.

  默认是1.针对表的删除频率来设置.

  delay_key_write

  针对MyISAM存储引擎,延迟更新索引.意思是说,update记录时,先将数据up到磁盘,但不up索引,将索引存在内存里,当表关闭时,将内存索引,写到磁盘. 值为 0不开启, 1开启. 默认开启.

  delayed_insert_limit, delayed_insert_timeout, delayed_queue_size

  延迟插入, 将数据先交给内存队列, 然后慢慢地插入.但是这些配置,不是所有的存储引擎都支持, 目前来看, 常用的InnoDB不支持, MyISAM支持. 根据实际情况调大, 一般默认够用了.

  expire_logs_days

  自动删除超过指定天数的日志. 建议为0,表示“不自动删除”.

  flush, flush_time

  是否启用, 同步表数据到磁盘.以及自动同步的间隔时间.

  针对flush_time, 官方建议只在Windows 9x或Me,或有最小资源的系统中使用该选项.所以,建议关闭.

  ft_boolean_syntax, ft_max_word_len, ft_min_word_len,ft_query_expansion_limit, ft_stopword_file

  针对MyISAM设置的参数, 全文搜索特性. 如果你不使用 FULLTEXT 索引,就不需要优化了. 详见mysql参考手册.

  join_buffer_size

  用于表间关联(join)的缓存大小.建议设为 131072.(128K)

  key_buffer_size

  索引块缓存区大小, 针对MyISAM存储引擎,该值越大,性能越好.但是超过操作系统能承受的最大值,反而会使mysql变得不稳定.

  如果不是MyISAM存储引擎,一般设置为 4-32M大小.

  key_cache_age_threshold, key_cache_block_size, key_cache_pision_limit

  键值缓存的相关设置.需要针对实际情况调优.只是针对MyISAM储存引擎.

  large_pages

  是否启动大页面支持.意思是,可以一些缓存分配更大的空间.这个特性已经被InnoDB, MyISAM等常用存储引擎支持.

  low_priority_updates

  低优先级更新.意思是, 所有的写操作(表写锁), 包括update,delete,insert等都需要等待读操作完成后才执行 (表读锁解开).

  因为是针对表的锁,所以,这里仅支持MyISAM.

  max_write_lock_count

  最大写锁数量.这个变量的含义是, 当写锁达到一定数量后, 就不限制读锁, 允许一部分读锁进入.(可以读数据了,否则需要等待写锁释放后,才能读)

  因为是针对表的锁,所以,这里仅支持MyISAM.

  preload_buffer_size

  重载索引时分配的缓冲区大小, 该变量仅支持MyISAM.

  read_buffer_size, read_rnd_buffer_size

  每个线程连续扫描时为扫描的每个表分配的缓冲区的大小(字节)。如果进行多次连续扫描,可能需要增加该值, 默认值为131072。

  sort_buffer_size

  每个排序线程分配的缓冲区的大小。增加该值可以加快ORDER BY或GROUP BY操作.默认数值是2097144(2M),建议加大到 16777208 (16M)。

  timed_mutexes

  显示mutexes的统计信息, 默认关闭OFF

  tmp_table_size

  临时表的大小,在未超过大小之前进行的操作是在内存中的, 当超过后,mysql会自动转换到硬盘上.

bitsCN.com

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

705

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

233

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

117

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

22

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

61

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

30

2026.02.12

雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

15

2026.02.12

豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

669

2026.02.12

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

58

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Rust 教程
Rust 教程

共28课时 | 6.1万人学习

PostgreSQL 教程
PostgreSQL 教程

共48课时 | 9.4万人学习

Git 教程
Git 教程

共21课时 | 3.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号