招聘信息在文字最末尾。
这已经是这个系列的第五期了,从PS到SYS,基本上这两个可以获取整体的MYSQL8的性能信息(目前学到的需要整体在8.022版本才有之前介绍的所有的功能,8.018可以有90%的功能)。所以选择MYSQL 从高可用的角度以及监控的角度来看,版本至少应该在8.022以上。
言归正在,MYSQL Information schema 本身是从MYSQL 5.0开始有的,记得当时在使用的时候尤其5.5, 对于IS 的感觉和现在对于SYS 的感觉是一样的,也是插件,也不敢开,开了就对系统的性能有影响,那也是差不多有10年前的事情了。当时IS 推出是对于MYSQL是十分重要的,获得MYSQL的信息在没有IS 大多是通过show engine innodb status; 获得。
转换到MYSQL8 整体的IS 对比之前的 MYSQL 5.X 更规整和调理了,IS 本身是一个虚拟的结构,通过具有全局权限的USAGE,process 等的账号来查看其中的信息。
上面的information_schema中的innodb_metrics 可以理解为对于MYSQL 数据库中的所有的信息的记录,举例我们对于dml 操作中的update
下面我们举一个例子
我们针对此时此刻的MYSQL 的UPDATE 操作的个数进行记录,看看一分钟到底进行了多少UPDATE 操作。上图中针对information_schema 中的innodb_metrics 中的update 的数据进行初始化,其中只对count_reset 进行更新,此后的UPDATE 操作就直接在这个 column累加,另外update操作中的重复update是不记录在这里,有效的对产生实际写入磁盘的UPDATE起作用。所以针对某一个时间段统计INSERT ,DELETE ,UPDATE 有了更方便的手段,这里统计的参数 314个,完全覆盖了,如下的方面,包含的数据库操作,数据库底层操作信息,I/O, 数据库操作的性能等等,有点类似SQLserver 中的性能计数器。
| metadata
| lock
| server
| buffer
| buffer_page_io
| os
| transaction
| purge
| undo
| log
| compression
| index
| adaptive_hash_index
| file_system
| change_buffer
| dml
| sampling
| ddl
| icp
| cpu
| page_track
| dblwr
具体每个详细的功能可以打开表后,针对相关的监控项目与系统的帮助文件进行查询。
2 在MYSQL的表设计中,有些表可能会误使用系统关键字,
SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, RESERVED FROM information_schema.COLUMNS INNER JOIN information_schema.KEYWORDS ON KEYWORDS.WORD = COLUMNS.COLUMN_NAME WHERE TABLE_SCHEMA NOT IN ('mysql', 'information_schema', 'performance_schema', 'sys' ) ORDER BY TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME;
上面的语句可以通过查询,搜寻到在用户表中,使用了KEY WORD的表
针对上面的情况可以开发出很多短时的监控方案,来针对一些突发的事情,
MYSQL 基于对于系统性能的考虑,添加了 information_schema_stats_expirty 变量,通过变量可以控制在MYSQL CACHE 中的数据驻留的刷新的时间。默认这个时间是 1天 86400秒。而MYSQL 5.X 中这个刷新的频率相当于0 无时不刻的在刷新中。
在information 中的一些功能有利于我们对MYSQL 整体数据库的使用情况有一些了解例如,一个MYSQL intance中到底有多少表在我们的innodb buffer pool中,我们是可以通过innodb_buffer_page来进行查询的。
举例我们还可以通过information中的表来查看到底有多少行数据多少索引,已经加载在我们的innodb buffer 中,来分析那些索引是HOT 的索引,以及多少行数据已经加载到我们的innodb buffer中。
SELECT table_name,index_name,count(*) as 'index_number',sum(number_records) as 'rows_index'
FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE
WHERE page_type = 'index'
group by table_name,index_name;
查找用户表中的复合索引以及索引名字
select table_name,index_name from STATISTICS
WHERE TABLE_SCHEMA NOT IN ('mysql','sys','performance_schema')
group by index_name,seq_in_index,table_name
having seq_in_index >=2;
招聘信息:
DEVOPS DBA
岗位职责:
1 负责公司数据库运维平台开发,与维护。
2 熟悉主流数据库的简单操作,如MYSQL 或 POSTGRESQL 等
3 参与设计公司级数据库运维平台模块设计和规划
4 协助DBA TEAM 完成自动化工具的编制的部署
职位要求:
1 掌握Python 语言,对于python 有一定的研究 或参与Python 类的devops 工作
2 熟悉LINUX 常用的命令以及python 与数据库之间API 的操作
3 逻辑思维清晰,有责任心,有团队精神,喜欢尝试新技术,热爱学习
4 对于python 的web 框架有相关经验
——————————————————————————————
工作地点:天津(市区)
优势 1 已经有北京DEVOPS 专家,可协同工作,快速成长
2 数据库方面,只要你敢来 ,就敢让你成为 某一种数据库的专家 MYSQL PG MONGODB 随意
3 平台开放性高,没有限制,和你一同设计规划,提供 MYSQL PG MONGODB 的经验,以及部分代码
简历: 邮件地址 liuhuayang@tcsl.com.cn 微信私聊也可 liuaustin3 微信号