首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

时序数据库Influx-IOx源码学习十一(SQL的解析)

InfluxDB是一个由InfluxData开发的开源时序数据库,专注于海量时序数据的高性能读、写、高效存储与实时分析等,在DB-Engines Ranking时序型数据库排行榜上常年排名第一。...在Fusion中,有一个名为parser.rs的解析器他的主要工作就是将纯SQL解析为一个程序基本可以理解的结构。主要过程有: 定义所有的关键词,能够识别出来在sql语句中的含义。...比如 SELECT、INSERT 等等 遍历sql语句每个空格或者遇到表达式切分一次,然后在定义的关键词里查找是否为关键字 使用一个名叫TOKEN的枚举来表示每个节点不同的含义,比如EQ,NEQ,COMMA...pub(crate) struct IOxReadFilterNode { table_name: Arc, schema...我理解为批处理、分区合并、并行度优化。主要是为了在实际实行的过程中,减少因为通讯、调用、单机等造成的响应缓慢。

58030

influxdb 学习

第一个点属于series其measurement为cpu_load_short,tag是host=server02, timestamp是server本地的时间戳;第二个点同样是measurement为...timestamp是一样的,但是series不一样,其measurement为cpu_load_short, tag为direction=in,host=server01,region=us-west。...db=mydb' --data-binary @cpu_data.txt 如果你的数据文件的数据点大于5000时,你必须把他们拆分到多个文件再写入InfluxDB。...查询数据 使用HTTP接口查询数据 过发送一个GET请求到/query路径,并设置URL的db参数为目标数据库,设置URL参数q为查询语句。...返回结果可以按10000数据点被分块,为了改变这个返回最大的分块的大小,可以在查询的时候加上chunk_size参数,例如返回数据点是每20000为一个批次。

2.7K31
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL 开发实践 8 问,你能 hold 住几个?

    这里做了几个简单压测实验 机器:8核CPU,8G内存 表结构(尽量模拟业务):12个字段(1个bigint(20)为自增primary key,5个int(11),5个varchar(512),1个timestamp...,r为按返回记录数等) -t:去Top多少条,-t 5表示取前5条 执行完分析结果如下: Count: 1076100 Time=0.09s (99065s) Lock=0.00s (76s) Rows...(update_time) as updatetime from t_kick_log where unix_timestamp(update_time) > N 以第1条为例,表示这类SQL(....000001 > binlog.data.sql 最后把要恢复的binlog导入db MySQL -uxxxx -p xxxx data.sql 7.该选择MySQL哪种存储引擎,...为查询语句选择合适的执行路径 Cache和Buffer:查询缓存。缓存查询的结果,有命中即可直接返回 Engine:存储引擎。MySQL数据最后组织并存储成具体文件

    11.2K61

    ELK构建MySQL慢日志收集平台详解

    ; SET timestamp=1475058968; select count(*) from redeem_item_consume where id<=526083; 5.7版本慢查询日志 # Time...=1474135203; SELECT table_schema as 'DB',table_name as 'TABLE',CONCAT(ROUND(( data_length + index_length...,和以SQL语句结尾的行合并为一条完整的慢日志语句 确定SQL对应的DB:use db这一行不是所有慢日志SQL都存在的,所以不能通过这个来确定SQL对应的DB,慢日志中也没有字段记录DB,所以这里建议为...DB创建账号时添加db name标识,例如我们的账号命名方式为:projectName_dbName,这样看到账号名就知道是哪个DB了 确定SQL对应的主机:我想通过日志知道这条SQL对应的是哪台数据库服务器怎么办...,从现在开始收集,之前已存在的不管 name:设置filebeat的名字,如果为空则为服务器的主机名,这里我们定义为服务器IP output.kafka:配置要接收日志的kafka集群地址可topic名称

    1.4K30

    ELK构建MySQL慢日志收集平台详解

    ; SET timestamp=1475058968; select count(*) from redeem_item_consume where id<=526083; 5.7版本慢查询日志 # Time...=1474135203; SELECT table_schema as 'DB',table_name as 'TABLE',CONCAT(ROUND(( data_length + index_length...,和以SQL语句结尾的行合并为一条完整的慢日志语句 确定SQL对应的DB:use db这一行不是所有慢日志SQL都存在的,所以不能通过这个来确定SQL对应的DB,慢日志中也没有字段记录DB,所以这里建议为...DB创建账号时添加db name标识,例如我们的账号命名方式为:projectName_dbName,这样看到账号名就知道是哪个DB了 确定SQL对应的主机:我想通过日志知道这条SQL对应的是哪台数据库服务器怎么办...,从现在开始收集,之前已存在的不管 name:设置filebeat的名字,如果为空则为服务器的主机名,这里我们定义为服务器IP output.kafka:配置要接收日志的kafka集群地址可topic名称

    1.7K30

    深入理解Hive【Hive架构介绍、安装配置、Hive语法介绍】

    【root用户为/root下】中,编辑一个.hiverc文件,将参数写入其中: vi .hiverc set hive.cli.print.header=true; set hive.cli.print.current.db...//hdp-02:9000/user/hive/warehouse/db_order.db 7.2    建表 7.2.1    基本建表语句 use db_order; create table t_order.../t_order 只是,这样建表的话,hive会认为表数据文件中的字段分隔符为^A  (对应键盘control V + control A) 正确的建表语句为: create table t_order...因为,where是用于在真正执行查询逻辑之前过滤数据用的 having是对group by分组聚合之后的结果进行再过滤; 语句的执行逻辑: 1、where过滤不满足条件的数据 2、用聚合函数和group...local inpath '/root/hivetest/t_rn.data' into table t_rn; 需要查询出每种性别中年龄最大的2条数据 思考:使用分组聚合函数group by只能产生一个结果

    3.2K20

    故障解析丨导入字符串NULL导致主从报错

    1.背景概述 目前需要搭建一个从库,由于单表数据量较大,时间比较有限,考虑到导入导出的时间,并且GreatSQL支持并行load data的功能,能够加速数据的导入,因此决定使用 select into...outfile 和 load data 的方式进行数据的迁移; 在数据导入完成后进行数据同步,从库发生报错 1032 找不到记录,但是登录从库中可以查询到此条记录,这里就很奇怪; 最后通过解析relaylog...school='null'; Empty set (0.00 sec) 在主库查询的结果与从库相反 可以得出结论,由于从库导入的数据将NULL值列的数据导入成了字符串 NULL,因此导致主从数据出现了不一致...可以看到主从状态已经恢复正常 3.总结 1.如果FIELDS ESCAPED BY字符为空字符,则没有字符被转义,并且NULL被作为NULL输出,而不是\N;这也是导致此次主从报错的原因。...2.如果这张表使用的是主键而不是唯一索引,即使某些列被导入为字符串NULL,也不会报错。 3.如果这张表没有索引或有普通索引,则会报错。 Enjoy GreatSQL :)

    15310

    LOAD DATA中包含NULL导致主从报错结局

    1.背景概述 目前需要搭建一个从库,由于单表数据量较大,时间比较有限,考虑到导入导出的时间,并且GreatSQL支持并行load data的功能,能够加速数据的导入,因此决定使用 select into...outfile 和 load data 的方式进行数据的迁移; 在数据导入完成后进行数据同步,从库发生报错 1032 找不到记录,但是登录从库中可以查询到此条记录,这里就很奇怪; 最后通过解析relaylog...,根据relaylog中的update记录,以每个字段为查询条件进行查询,发现是由于NULL值列导致的,主库这列的值是 NULL,从库在导入后导成了字符串"NULL",因此导致回放update操作时匹配不到数据而报错...school='null'; Empty set (0.00 sec) 在主库查询的结果与从库相反 可以得出结论,由于从库导入的数据将NULL值列的数据导入成了字符串 NULL,因此导致主从数据出现了不一致...2.如果这张表使用的是主键而不是唯一索引,即使某些列被导入为字符串NULL,也不会报错。 3.如果这张表没有索引或有普通索引,则会报错。

    14210

    .Net Core with 微服务 - 使用 AgileDT 快速实现基于可靠消息的分布式事务

    如果可靠消息服务收到“确认”消息则更新数据库里的消息记录的状态为“待发送”,如果收到的消息为“取消”则更新消息状态为“已取消” 如果上一步更新的数据库为“待发送”,那么会开始往MQ投递消息,并且更改数据库里的消息记录的状态为...目前框架使用的可靠消息服务为 rabbitmq 。...运行服务端 在服务新建一个数据库并且新建一张表 // crate event_message table on mysql create table if not exists event_message...:provider=mysql - db:conn= Database=agile_dt;Data Source=192.168.0.115;User Id=root;Password=mdsd...mq:port=5672 安装客户端 在主动方跟被动方都需要安装AgileDT的客户端库 Install-Package AgileDT.Client 主动方使用方法 在业务数据库添加事务消息表 // crate

    35620

    .Net Core with 微服务 - 使用 AgileDT 快速实现基于可靠消息的分布式事务

    如果可靠消息服务收到“确认”消息则更新数据库里的消息记录的状态为“待发送”,如果收到的消息为“取消”则更新消息状态为“已取消” 如果上一步更新的数据库为“待发送”,那么会开始往MQ投递消息,并且更改数据库里的消息记录的状态为...目前框架使用的可靠消息服务为 rabbitmq 。...运行服务端 在服务新建一个数据库并且新建一张表 // crate event_message table on mysql create table if not exists event_message...:provider=mysql - db:conn= Database=agile_dt;Data Source=192.168.0.115;User Id=root;Password=mdsd...port=5672 安装客户端 在主动方跟被动方都需要安装AgileDT的客户端库 Install-Package AgileDT.Client 主动方使用方法 在业务数据库添加事务消息表 // crate

    29640

    导入字符串NULL导致主从报错

    1.背景概述 目前需要搭建一个从库,由于单表数据量较大,时间比较有限,考虑到导入导出的时间,并且GreatSQL支持并行load data的功能,能够加速数据的导入,因此决定使用 select into...outfile 和 load data 的方式进行数据的迁移; 在数据导入完成后进行数据同步,从库发生报错 1032 找不到记录,但是登录从库中可以查询到此条记录,这里就很奇怪; 最后通过解析relaylog...school='null'; Empty set (0.00 sec) 在主库查询的结果与从库相反 可以得出结论,由于从库导入的数据将NULL值列的数据导入成了字符串 NULL,因此导致主从数据出现了不一致...可以看到主从状态已经恢复正常 3.总结 1.如果FIELDS ESCAPED BY字符为空字符,则没有字符被转义,并且NULL被作为NULL输出,而不是\N;这也是导致此次主从报错的原因。...2.如果这张表使用的是主键而不是唯一索引,即使某些列被导入为字符串NULL,也不会报错。 3.如果这张表没有索引或有普通索引,则会报错。 Enjoy GreatSQL :)

    18110
    领券