mysql预聚合结果查询与索引设计 发表于 2019-09-12 | 分类于 mysql 这里需要注意,mysql中存储的数据不光具有明细数据,还具有经过etl聚合完成之后的数据,也就是说查询某个维度的聚合结果的时候,不需要实时的group by,可以直接查询预聚合完成的结果。 什么样的索引是最合适的 因为维度很多,所以需要使用联合索引 联合索引最需要关注的是索引的字段顺序 如果是实时聚 ... 阅读全文 »
单例模式-懒加载模式的Double-Checked Locking 发表于 2019-09-12 | 分类于 设计模式 最简单的懒加载12345678910// Single threaded versionclass Foo { private Helper helper = null; public Helper getHelper() { if (helper == null) ... 阅读全文 »
自定义分片分配 发表于 2019-09-03 | 分类于 elasticsearch 场景一个集群中有多台机器,但是机器的配置不同,最好能够让配置好的机器上面的分片多一些,但是es自己的策略貌似不会考虑到机器的配置,配置高低的机器上分片的数量差不多 自定义分片分配数量对于一个索引来说,配置高的机器上分片更多一些 分配策略:排除低配节点ES提供了api,可以排除低配的节点,但是不能所有 ... 阅读全文 »
输入流与输出流 发表于 2019-08-30 | 分类于 java java的io有一个比较不容易理解的就是流的方向问题,到底输入流和输出流是怎么个概念,这个入和出到底有什么不同?以最常见的文件流和不太常见的字节数组流为例进行解释 文件输入输出流输入流 将文件读入到内存(这个内存就是流)中,构造器以File作为参数,读取文件的时候就是读取这个文件 1FileInp ... 阅读全文 »
ES查询性能分析之profile 发表于 2019-08-30 | 分类于 elasticsearch 重要指标query type:查询类型 time:查询消耗的时间 breakdownquery的详细信息,单位是纳秒 create_weight:创建用于查询的临时上下文 build_scorer:构建用户评分的评分器 next_doc:统计得到的查询下一个文档id需要的时间,这个不太懂啥意思, ... 阅读全文 »
explain命令的使用 发表于 2019-08-27 | 分类于 mysql 准备条件创建表 user_info:name字段有索引,sname字段有唯一索引 order_info:user_id、product_name、productor三个字段的联合索引 12345678910111213141516171819202122232425262728293031323 ... 阅读全文 »
mysql离线计算留存 发表于 2019-08-27 | 分类于 mysql 表结构 id spu_code wk 1 1 1 2 1 2 3 1 3 4 1 1 5 1 2 6 1 7 7 1 11 8 2 7 9 1 11 唯一标识:spu_code 时间字段:wk 计算sql123456789101112131415SE ... 阅读全文 »
java垃圾回收之各种GC 发表于 2019-08-26 | 分类于 java 新生代回收算法通过复制算法实现垃圾的回收,将标记被使用的对象复制到一个未存放对象的空间,然后清空当前空间中的剩余对象。因此复制清除算法需要一块单独的空闲空间用于对象的复制。 可用GC 串行GC parallel scavenge(PS):并行回收 采用复制算法 扫描和复制都是多线程执行 根据新生代回 ... 阅读全文 »
Elasticsearch的原理与ADT应用 发表于 2019-08-12 | 分类于 elasticsearch 简介 Elasticsearch(简称ES)是一个分布式、可扩展、实时的搜索与数据分析引擎。ES不仅仅只是全文搜索,还支持结构化搜索、数据分析、复杂的语言处理、地理位置和对象间关联关系等。 ES的底层依赖Lucene,Lucene可以说是当下最先进、高性能、全功能的搜索引擎库。但是Lucene仅仅 ... 阅读全文 »