站点图标 起风网

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

时区信息记录表|全方位认识 mysql 系统库缩略图

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

2020-12-04 00:00
来源:老叶茶馆

原标题:时区信息记录表|全方位认识 mysql 系统库

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

01 时区信息概述

MySQL服务器维护几个时区设置:

如何填充时区表(mysql 系统字典库下有时区相关的表time_zone、time_zone_leap_second、time_zone_name、time_zone_transition、time_zone_transition_type,这些表是在MySQL初始化时创建,但不会加载数据到这些表中):

# 使用系统自带的时区数据集文件来填充MySQL 时区表(一次加载操作系统支持的所有时区),mysql_tzinfo_to_sql命令会读取您系统的时区文件并生成SQL语句来插入到MySQL的时区表中。注意:这种方式不会导入跳秒信息到time_zone_leap_second表中,需要单独操作

[root@localhost ~] # mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql -pletsg0

mysql: [Warning] Using a password on the command line interface can be insecure.

Warning: Unable to load‘/usr/share/zoneinfo/iso3166.tab’astimezone. Skipping it.

Warning: Unable toload‘/usr/share/zoneinfo/zone.tab’astimezone. Skipping it.

Warning: Unable toload‘/usr/share/zoneinfo/zone1970.tab’astimezone. Skipping it.

# mysql_tzinfo_to_sql也可用于加载单个时区文件或生成闰秒信息:

## 加载单个时区文件,格式为:mysql_tzinfo_to_sql tz_file tz_name | mysql -u root mysql ,如下

[root@localhost ~] # mysql_tzinfo_to_sql /usr/share/zoneinfo/Asia/Shanghai Asia/Shanghai | mysql -u root mysql -pletsg0

## 如果您的时区需要考虑闰秒(跳秒),命令如下,其中tz_file是您的时区文件的名称(绝对路径,要注意:导入跳秒信息的时区必须要是使用了跳秒的时区,即,在time_zone表中的use_leap_second字段为Y才有跳秒信息可导入,否则该表中的信息为空):

shell> mysql_tzinfo_to_sql –leap tz_file | mysql -u root mysql ,例如:

[root@localhost ~] # mysql_tzinfo_to_sql –leap /usr/share/zoneinfo/right/US/Arizona | mysql -u root mysql -pletsg0

## 注意:运行mysql_tzinfo_to_sql之后,最好重新启动服务器,以便使得Server使用新的时区数据,以免它不会继续使用任何先前缓存的时区数据。

# 如果您的系统没有zoneinfo数据库(例如Windows),那么您可以使用可在MySQL Developer Zone上下载的软件包,链接如下:http://dev.mysql.com/downloads/timezones.html

## 下载完成之后导入该文件到数据库中,然后重启Server即可

shell> mysql -u root mysql <file_name

## 注意:不要使用包含MyISAM表的可下载软件包。MySQL 5.7及更高版本使用InnoDB作为时区表。尝试用MyISAM表替换它们会导致问题。如果您的系统有zoneinfo数据库,请不要自行下载软件包。改用mysql_tzinfo_to_sql工具直接导入系统中的时区数据集。否则,您可能会在MySQL和系统上的其他应用程序之间的日期时间处理方面产生差异。

02 时区信息记录表详解

2.1. time_zone

该表提供查询时区ID和跳秒之间的映射关系数据。下面是该表中存储的信息内容(需要手工导入时区数据信息到数据库才有数据)。

root@localhost : mysql 04:51:37> select * from time_zone limit 1186, 2;

+————–+——————+

| Time_zone_id |Use_leap_seconds |

+————–+——————+

| 2373| N |

| 2375 |Y |

+————–+——————+

2 rows inset (0.01 sec)

表字段含义。

2.2. time_zone_leap_second
该表提供查询跳秒机器修正值信息,该表中的信息与time_zone_transition表中的类似,但time_zone_transition表中还记录了时区ID等信息。
下面是该表中存储的信息内容。

root@localhost : mysql 04:51:44> select * from time_zone_leap_second;

+—————–+————+

| Transition_time |Correction |

+—————–+————+

| 78796800| 1 |

| 94694401 |2|

……

表字段含义。

2.3. time_zone_name
该表提供查询时区的名称列表和时区ID的映射关系。
下面是该表 中存储的信息内容。

root@localhost : mysql 04:53:13> select * from time_zone_name limit 2;

+—————-+————–+

| Name |Time_zone_id |

+—————-+————–+

| Africa/Abidjan | 1 |

| Africa/Accra |3|

+—————-+————–+

2 rows inset (0.00 sec)

表字段含义。

2.4. time_zone_transition
该表提供查询时区的跳秒数据。
下面是该表中存储的信息内容。

root@localhost : mysql 04:59:54> select * from time_zone_transition limit 2;

+————–+—————–+——————–+

| Time_zone_id |Transition_time | Transition_type_id |

+————–+—————–+——————–+

| 1 |1830383032| 1 |

| 3 |1640995148| 2 |

+————–+—————–+——————–+

2rows inset ( 0. 00sec)

表字段含义。

2.5. time_zone_transition_type
该表提供查询具体的跳秒信息以及与时区的对应数据。下面是该表中存储的信息内容。

root@localhost : mysql 05:14:59> select * from time_zone_transition_type limit 2;

+————–+——————–+——–+——–+————–+

| Time_zone_id |Transition_type_id | Offset |Is_DST | Abbreviation |

+————–+——————–+——–+——–+————–+

| 1 |0| -968 |0| LMT |

| 1 |1| 0 |0| GMT |

+————–+——————–+——–+——–+————–+

2rows inset ( 0. 00sec)

表字段含义。


https://dev.mysql.com/doc/refman/5.7/en/time-zone-support.html

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

罗小波·ScaleFlux数据库技术专家

《千金良方——MySQL性能优化金字塔法则》、《数据生态:MySQL复制技术与生产实践》作者之一。

熟悉MySQL体系结构,擅长数据库的整体调优,喜好专研开源技术,并热衷于开源技术的推广,在线上线下做过多次公开的数据库专题分享,发表过近100篇数据库相关的研究文章。返回搜狐,查看更多

责任编辑:

声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
阅读 ()

退出移动版