mysql timestamp 当前_时区信息记录表|全方位认识 mysql 系统库

016cbfbded96e0b575275e0fcf418e64.png

作者  罗小波 · 沃趣科技高级数据库技术专家

出品  沃趣科技

8a9f20450b7c69d4d43abc536d00998e.png

在上一期《优化器成本记录表|全方位认识 mysql 系统库》中,我们详细介绍了mysql 系统库中的优化器成本记录表,本期我们将为大家带来系列第六篇《时区信息记录表|全方位认识 mysql 系统库》,下面请跟随我们一起开始 mysql 系统库的系统学习之旅吧!

01 时区信息概述

MySQL服务器维护几个时区设置:
  • 系统时区:当Server启动时,尝试确定主机的时区并使用它来设置Server的system_time_zone系统变量值。该变量为只读变量,此外,您还可以在Server启动时使用--timezone = timezone_name选项为mysqld_safe设置MySQL服务器的系统时区。或者在Server启动之前设置 TZ系统环境变量为timezone_name值。
  • Server的当前时区。全局系统变量time_zone的值表示当前正在运行的Server时区,该系统变量的初始值为'SYSTEM',表示Server时区与系统时区相同。* 如果系统变量time_zone设置为SYSTEM,则每个有时区计算需要的MySQL函数在调用时,都会调用系统库来确定当前的系统时区。因此,此系统调用可能会受全局互斥保护,从而导致争用发生。* Server的全局当前时区可以在启动时使用--default-time-zone = timezone启动选项明确指定,也可以在my.cnf中使用default-time-zone='timezone' 指定,如果您具有SUPER权限,则可以使用语句SET GLOBAL time_zone = timezone; 在Server运行时设置全局Server时区值。* time_zone是全局,会话变量,可以在会话级别为每个会话单独设置自己的时区(连接时区),每个会话的time_zone值默认会继承time_zone系统变量的全局值,但每个会话可以使用SET time_zone = timezone;语句进行 修改。要注意:当前会话的时区设置会影响对时区敏感的时间值的显示和存储。例如:NOW()或CURTIME()等函数显示的值是使用会话时区值、TIMESTAMP数据类型列中存储和检索的值使用的是会话时区值-- TIMESTAMP列的值会从当前时区转换为UTC存储,查询时从UTC转换为当前时区。但当前时区设置不影响诸如UTC_TIMESTAMP()函数或DATE、TIME或DATETIME数据类型列中值的显示和存储--这些数据类型中的值不以UTC存储;如果有需要针对DATE、TIME或DATETIME显示时区影响,可以将它们的值转换为UTC,然后执行算术运算,然后再转换回去。* time_zone系统变量可以设置为SYSTEM,表示与系统时区相同,也可以设置具体的时区,例如:'+10:00'或'-6:00' 表示在UTC时区的基础上,+ 10个时区或 -6个时区(与UTC时区的偏移量),实际上相当于东十区和西六区。还可以设置为具体的时区名称,例如: 'Europe/Helsinki', 'US/Eastern', or 'MET',但是,可设置的有效值来自mysql系统字典库的time_zone表,该表中的信息需要手工使用相应的命令插入,稍后会介绍插入方法。
如何填充时区表(mysql 系统字典库下有时区相关的表time_zone、time_zone_leap_second、time_zone_name、time_zone_transition、time_zone_transition_type,这些表是在MySQL初始化时创建,但不会加载数据到这些表中):
  • 如果您的系统具有自己的zoneinfo数据库(描述时区的文件集,通常在/usr/share/zoneinfo目录下),则可以使用mysql自带的mysql_tzinfo_to_sql程序来填充时区表。如果您的系统没有zoneinfo数据库,则可以使用本节后面所述的可下载软件包来进行填充时区表:
# 使用系统自带的时区数据集文件来填充MySQL 时区表(一次加载操作系统支持的所有时区),mysql_tzinfo_to_sql命令会读取您系统的时区文件并生成SQL语句来插入到MySQL的时区表中。注意:这种方式不会导入跳秒信息到time_zone_leap_second表中,需要单独操作

02 时区信息记录表详解

2.1. time_zone
该表提供查询时区ID和跳秒之间的映射关系数据。
下面是该表中存储的信息内容(需要手工导入时区数据信息到数据库才有数据)。
04
表字段含义。
  • Time_zone_id:时区ID。
  • Use_leap_seconds:表示该时区是否使用了跳秒(GPS原子钟时间和UTC时间之差,因为两个时间系统的秒长不一样,也就是我们所说的时间尺度不一样,最终随着时间的累积,两者之间就会差。而世界协调时为了协调人们生活中的时间,就采用了跳秒的办法来处理这种差异。目前两者之差为15秒)。
2.2. time_zone_leap_second
该表提供查询跳秒机器修正值信息,该表中的信息与time_zone_transition表中的类似,但time_zone_transition表中还记录了时区ID等信息。
下面是该表中存储的信息内容。
04
表字段含义。
  • Transition_time:跳秒的瞬变时间(表示UTC和GPS时间的差异 ?
  • Correction:跳秒的修正值。
2.3. time_zone_name
该表提供查询时区的名称列表和时区ID的映射关系。
下面是该表中存储的信息内容。
04
表字段含义。
  • Name:时区名称,该值为time_zone系统变量的有效值之一。
  • Time_zone_id:时区ID,该ID和表time_zone中的ID相对应。
2.4. time_zone_transition
该表提供查询时区的跳秒数据。
下面是该表中存储的信息内容。
04
表字段含义。
  • Time_zone_id:时区ID。
  • Transition_time:与time_zone_leap_second表中的Transition_time字段含义相同。
  • Transition_type_id:与time_zone_transition_type表中的Transition_type_id相对应。
2.5. time_zone_transition_type
该表提供查询具体的跳秒信息以及与时区的对应数据。
下面是该表中存储的信息内容。
05
表字段含义。
  • Time_zone_id:时区ID。
  • Transition_type_id:与time_zone_transition表中的Transition_type_id值对应。
  • Offset:与UTC时间之间的偏移量。
  • Is_DST:
  • Abbreviation:某某标准时间的缩写,例如:GMT,该值为time_zone系统变量的有效值之一。
本期内容就介绍到这里,本期内容参考链接如下:
https://dev.mysql.com/doc/refman/5.7/en/time-zone-support.html
“ 

"翻过这座山,你就可以看到一片海!"。坚持阅读我们的"全方位认识 mysql 系统库"系列文章分享,你就可以系统地学完它。谢谢你的阅读,我们下期不见不散!

| 作者简介

罗小波·沃趣科技高级数据库技术专家

IT从业多年,主要负责MySQL 产品的数据库支撑与售后二线支撑。曾参与版本发布系统、轻量级监控系统、运维管理平台、数据库管理平台的设计与编写,熟悉MySQL体系结构,Innodb存储引擎,喜好专研开源技术,多次在公开场合做过线下线上数据库专题分享,发表过多篇数据库相关的研究文章。

相关链接

MySQL 一个让你怀疑人生的hang死现象

揭秘 MySQL 主从环境中大事务的传奇事迹

MySQL 执行DDL语句 hang住了怎么办?

手把手教你认识OPTIMIZER_TRACE

MySQL行级别并行复制能并行应用多少个binlog group?

binlog server还是不可靠吗?

MySQL binlog基于时间点恢复数据失败是什么鬼?

select into outfile问题一则

开源监控系统Prometheus的前世今生

prometheus监控多个MySQL实例

MySQL问题两则

Kubernetes scheduler学习笔记

执行计划-3:解释规则

执行计划-2:查看更多的信息

执行计划-1:获取执行计划

大数据量删除的思考(四)

大数据量删除的思考(三)

大数据量删除的思考(二)

大数据量删除的思考(一)

优化器成本记录表|全方位认识 mysql 系统库

统计信息记录表|全方位认识 mysql 系统库

数据库对象信息记录表|全方位认识 mysql 系统库

访问权限控制系统|全方位认识 mysql 系统库

权限系统表 | 全方位认识 mysql 系统库

Oracle RAC CacheFusion 系列十五:Oracle RAC CRServer Part Two

Oracle RAC Cache Fusion 系列十四:Oracle RAC CR Server Part One

Oracle RAC Cache Fusion 系列十三:PCM资源访问

c90a15e624d464ca6ddf3784324bd05f.png

更多干货,欢迎来撩~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值