-
支持zabbix
2.0和2.2,mysql在有外键的表不支持分区表。在zabbix
2.0和2.2中history和trend表没有使用外键,因此是可以在这些表中做分区的。
Index
changes:
1.如果zabbix的数据库已经有了数据,更改索引可能需要一些时间,根据具体的数据量,需要的时间长短也不一样。
2.在某些版本的MySQL索引的改变会使整个表上读锁。貌似mysql
5.6没有这个限制。
所述第一步骤是修改几个索引以允许做分区,按照下面的命令:
mysql>
Alter
table
history_text
drop
primary
key,
add
index
(id),
drop
index
history_text_2,
add
index
history_text_2
(itemid,
id)
Query
OK,
0
rows
affected
(0.49
sec)
Records:
0
Duplicates:
0
Warnings:
0
mysql>
Alter
table
history_log
drop
primary
key,
add
index
(id),
drop
index
history_log_2,
add
index
history_log_2
(itemid,
id)
Query
OK,
0
rows
affected
(2.71
sec)
Records:
0
Duplicates:
0
Warnings:
0
Stored
Procedures:
下面开始填写存储过程,需要执行下面的几个存储过程语句,只要能看到"Query
OK,
0
rows
affected
(0.00
sec)"只能就没有什么问题了。
做过Zabbix的同学都知道,Zabbix通过专用的Agent或者SNMP收集相关的监控数据,然后存储到数据库里面实时在前台展示。Zabbix监控数据主要分为以下两类:历史数据:history相关表,从history_uint表里面可以查询到设备监控项目的最大,最小和平均值,即存储监控数据的原始数据。
趋势数据:trends相关表,趋势数据是经过Zabbix计算的数据,数据是从history_uint里面汇总的,从trends_uint可以查看到监控数据每小时最大,最小和平均值,即存储监控数据的汇总数据。
Zabbix可以通过两种方式获取历史数据:
1.通过Zabbix前台获取历史数据
通过Zabbix前台查看历史数据非常简单,可以通过Monitoring->Lastest data的方式查看。也可以点击右上角的As plain test按钮保存成文本文件。
2.通过前台获取的数据进行处理和二次查询有很多限制,因此可以通过SQL语句直接从后台DB查询数据。
首先大家应该熟悉SQL语句Select 常用用法:
SELECT [ALL | DISTINCT] Select_List [INTO [New_Table_name]
FROM { Table_name | View_name} [ [,{table2_name | view2_name}
[,…] ]
[ WHERE Serch_conditions ]
[ GROUP BY Group_by_list ]
[ HAVING Serch_conditions ]
[ ORDER BY Order_list [ASC| DEsC] ]
说明:
1)SELECT子句指定要查询的特定表中的列,它可以是*,表达式,列表等。
2)INTO子句指定要生成新的表。
3)FROM子句指定要查询的表或者视图。
4)WHERE子句用来限定查询的范围和条件。
5)GROUP BY子句指定分组查询子句。
6)HAVING子句用于指定分组子句的条件。
7)ORDER BY可以根据一个或者多个列来排序查询结果,在该子句中,既可以使用列名,也可以使用相对列号,ASC表示升序,DESC表示降序。
8)mysql聚合函数:sum(),count(),avg(),max(),avg()等都是聚合函数,当我们在用聚合函数的时候,一般都要用到GROUP BY 先进行分组,然后再进行聚合函数的运算。运算完后就要用到Having子句进行判断了,例如聚合函数的值是否大于某一个值等等。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)