当前位置: 首页 > news >正文

网站搜索引擎优化情况怎么写青海省建设工程监理协会网站

网站搜索引擎优化情况怎么写,青海省建设工程监理协会网站,wordpress搜索关闭,设计网站推荐提升审美本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作)#xff0c;由 李兆龙 确认#xff0c;转载请注明版权。 文章目录 引言样例SHOW SERIES比较原理结论结束语 引言 influxdb的计算引擎为了做到自底而上的…本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作)由 李兆龙 确认转载请注明版权。 文章目录 引言样例SHOW SERIES比较原理结论结束语 引言 influxdb的计算引擎为了做到自底而上的合并逻辑必然存在某种row的排序规则这些规则在查询计划的创建阶段就已经确定。 比如group by tags此类查询基于tag的排序而group by time的查询则基于time去做排序group by tags, time 则是基于tags和time至于show则是基于field排序特殊的比如show series cardinality在改写为select后实际是基于tags排序 事实上要完成一个流式引擎必须自底而上遵循某种排序规则例如子查询内部的排序规则和内部排序规则不同是则需要重排这就没法做到流式返回。 样例 show series不是基于serieskey或者基于展开后的tag做排序简单的看两个show series 返回的case yottadb_partition_replicas_num_lzl_ywq,account_id2Mqw0vQ\\\\ yottadb_partition_replicas_num_lzl_ywq,account_id4Mqw0vQ\\\\ yottadb_partition_replicas_num_lzl_ywq,account_id5Mqw0vQ\\\\ yottadb_partition_replicas_num_lzl_ywq,account_id7Mqw0vQ\\\\ yottadb_partition_replicas_num_lzl_ywq,account_id8Mqw0vQ\\\\ yottadb_partition_replicas_num_lzl_ywq,account_id9Mqw0vQ\\\\account_id2account_id4account_id5account_id7account_id8account_id9Mqw0vQ\\nullnullnullnullnullnullMqw0vQ\\nullnullnullnullnullnullMqw0vQ\\nullnullnullnullnullnullMqw0vQ\\nullnullnullnullnullnullMqw0vQ\\nullnullnullnullnullnullMqw0vQ\\ 这个case表示不是以serieskey内部的tag本身做排序因为以这个规则排序展开后account_id9应该排在最前面因为null本身小于任何值。 car1,citycity_0dddd,id2,typetype_2 car1,citycity_0dddd\\ ,id2,typetype_2 car1,citycity_1,id3,typetype_0空格的ascall码小于 ‘,’ 所以也不是以serieskey排序 SHOW SERIES比较原理 我们回到show series引擎内部迭代器调用栈帧如下 v1/coordinator/statement_executor.go:createIteratorsV2influxql/query/select.go:Selectinfluxql/query/compile.go: (c *compiledStatement) Prepare 已经把shards赋值给preparedStatement.icinfluxql/query/select.go: (p *preparedStatement) Selectinfluxql/query/select.go:buildCursorinfluxql/query/select.go:buildAuxIteratortsdb/shard.go:(a Shards) CreateIteratortsdb/shard.go:(s *Shard) CreateIteratortsdb/engine/tsm1/engine.go:CreateIteratortsdb/shard.go:(a Shards) CreateIteratortsdb/shard.go:(a Shards) createSeriesIteratortsdb/index.go:NewSeriesPointIteratortsdb/index.go:MeasurementIterator (is IndexSet) measurementIterator()tsdb/index/tsi1/index.go: (i *Index) MeasurementIterator()tsdb/index/tsi1/partition.go (p *Partition) MeasurementIterator()tsdb/index/tsi1/file_set.go (fs *FileSet) MeasurementIterator()tsdb/index/tsi1/log_file.go (f *LogFile) MeasurementIterator() 事实上createSeriesIterator之下的MeasurementIterator都是基于measurement name做比较真正的比较是shards中的seriesPointIterator其首先会获取每一个measurement的全部时间序列对应的tsid随后从sfile中获取tsid对应的serieskey直接原地调用sort 排序seriesKeys实际调用CompareSeriesKeys作为比较函数。 核心比较函数为CompareSeriesKeys func CompareSeriesKeys(a, b []byte) int {// Handle nil keys.if len(a) 0 len(b) 0 {return 0} else if len(a) 0 {return -1} else if len(b) 0 {return 1}// Read total size._, a ReadSeriesKeyLen(a)_, b ReadSeriesKeyLen(b)// Read names.name0, a : ReadSeriesKeyMeasurement(a)name1, b : ReadSeriesKeyMeasurement(b)// Compare names, return if not equal.if cmp : bytes.Compare(name0, name1); cmp ! 0 {return cmp}// Read tag counts.tagN0, a : ReadSeriesKeyTagN(a)tagN1, b : ReadSeriesKeyTagN(b)// Compare each tag in order.for i : 0; ; i {// Check for EOF.if i tagN0 i tagN1 {return 0} else if i tagN0 {return -1} else if i tagN1 {return 1}// Read keys.var key0, key1, value0, value1 []bytekey0, value0, a ReadSeriesKeyTag(a)key1, value1, b ReadSeriesKeyTag(b)// Compare keys values.if cmp : bytes.Compare(key0, key1); cmp ! 0 {return cmp} else if cmp : bytes.Compare(value0, value1); cmp ! 0 {return cmp}} }结论 所以事实上show series返回的真正顺序遵循以下规则 以measurement name排序每个measuremnet基于serieskey内部的tag本身做排序 其实很好理解因为从tsi中获取measurement对应的tsid后又从sfile获取对应的serieskey此时的serieskey为了解析的性能事实上进行了二进制编码的无法直接拿来比较其次此时是没有schema的概念的所以如果基于tag去排序效率会及其低下因为需要先计算合并后的schema结构然后再生成新的row所以搞了个这么个性能不错但是奇奇怪怪的排序方法 这种比较方式可以应用到流式框架但是意义不大因为本身这种排序就没有规定一个全局顺序不同的tagkey都直接拿来比较了而且与influxql本来的排序方式差别很大额外的开发工作很多 从用户的角度看show series的顺序没有什么意义就算希望有意义当前的show series也无法满足所以最好的方式就是直接hash merge不给用户保证show series的返回顺序influxdb的官网也没有保证show series的顺序。 结束语 花了三十分钟迅速写完这篇文章倒不是这个点很重要关键在于我在半年前实现某些特性时假设其顺序是serieskey在第二次实现假设其是以tag为顺序最后发现与想的完全不同。 以后做任何事前都需要提醒自己合理的规划可以节省大量时间。
http://www.pierceye.com/news/138446/

相关文章:

  • 问卷调查网站赚钱一流的盐城网站建设
  • 前端网站推荐常德农科院网站
  • 域名注册网站建设方案网站建设一般多少钱
  • 宁波网站推广找哪家重庆市建设工程信息网官网怎么查看
  • 大创意网站wordpress影视主题
  • 简约 网站模板电商网站推广方法
  • 做网站一月工资深圳建站推广公司
  • 免费建设商城网站网络商城应该如何推广
  • 做美食直播哪个网站最好html5期末大作业个人网站制作
  • 做网站和seo流程网址升级中
  • 自己做众筹网站怎样做才能发布你的网站
  • 陕西省建设厅网站查询恶意点击软件有哪些
  • 天河高端网站建设云南建设工程招投标信息网
  • iis 网站制作凡科互动小游戏怎么刷高分
  • 接网站开发项目如何做网站背景
  • 重庆奉节网站建设定制vx怎么弄
  • 烟台建网站公司哪家好辽源做网站的公司
  • 建设企业网站地址网站空间 虚拟主机
  • h5网站模板免费下载网页源码提取工具
  • 网站设计和网页设计建网站必备软件
  • 中国建设银行上海市分行网站音乐网站开发可行性分析
  • 如何用天地图做网站做面包有哪些网站知乎
  • 买了域名之后怎么建设网站做网站一年赚一千万
  • 跟网站开发公司签合同主要要点个人网站logo需要备案吗
  • 免费询盘网站自我介绍ppt模板
  • 中国会议营销网站怎么做找优惠券的网站
  • 做网站的那些事wordpress改写
  • 仿造整个网站呼市网站建设公司
  • 网站被黑客入侵怎么办企业文化墙设计网站推荐
  • 建设网站的群婚礼婚庆网站建设需求分析