2017——关于坚持了一年的事情

其实一直想写一篇,关于坚持一件事的心得,但看惯了网上大v的方法论,以及遇到各种方法的局限性之后,我便不敢妄下结论进行自行分析,以免使用不当,带偏了一批听信我的人,而这份信任异常难得,被辜负十分可惜。 不过最近看到的二爷的专栏,让我略有启发。 二爷和池大一样,也是一个惜言的人,虽然已有成就,但依然没有以一个成功者的身份去教导别人,从它的专栏中,你可以看到他的克制,一般都是提供观点与大家探讨,从不刻意去说教别人该怎么做,这对于我而言倍感赞同和支持。 我在想,既然自己反感说教
on 2017-12-28 | by wier 0

如何预估索引性能?

在《DB——数据的读取和存储方式》中,我们介绍了影响数据读取的方式,随机IO和顺序IO,在《Sql优化器究竟帮你做了哪些工作?》介绍了影响查询的一些基本因素,其中介绍了过滤因子、索引片的宽窄与大小以及匹配列和过滤列 是如何应用在sql查询中的。在《什么是三星索引》介绍了索引设计需要主要的因素以及推荐的设计方式。 那么这篇,我们将综合运用这些知识,并通过两个方法,快速估算当前的索引的性能,以及查询的效率。从这篇文章你会得到以下知识:BQ—基本问题法QUBE—快速上限估算法
on 2017-12-20 | by wier 0

什么是DB的三星索引

上一篇《Sql优化器究竟帮你做了哪些工作?》讲解了,sql优化器所做的工作,有不少同学询问,为何没有看到如何设计索引,这一篇主要来讲解下索引设计中需要遵循的规范。 这是数据库设计第三篇: 《Sql优化器究竟帮你做了哪些工作?》 《DB——数据的读取和存储方式》 如果你从网上或者教程中,查询索引设计相关规范,常常会看到一些不知所云的规则和注意事项,这些规则看似很有道理,但等你应用时,会发现仍然让你一头雾水,不知如何下手,就像我们提到的知识的边界一样,这些干涩
on 2017-12-14 | by wier 0

Sql优化器究竟帮你做了哪些工作?

上一篇,我们介绍了《DB——数据的读取和存储方式》,这篇聊聊sql优化器的工作。 关系型数据库的一大优势之一,用户无需关心数据的访问方式,因为这些优化器都帮我们处理好了,但sql查询优化的时候,我不得不要对此进行关注,因为这牵扯到查询性能问题。 有经验的程序员都会对一些sql优化了如指掌,比如我们常说的最左匹配原则,非BT谓词规避等等,那么优化器是如何确定这些的?以及为何一定要最左匹配,最左匹配的原理是什么,你是否有深入了解? 这一篇我们就通过一些实例来剖析优化器做了哪
on 2017-12-07 | by wier 0

DB——数据的读取和存储方式

RDBMS是我们常见的一些存储数据的仓库,无论是做前端还是后端,都会接触到。 我们常见的数据处理,都是通过sql来和数据库做交互的,因此造成了许多人对数据库认知比较模糊,底层的架构也不是很清晰,从本周开始,我们介绍些数据库的基础知识,来了解数据库引擎是如何工作的,以及如何设计更好的索引的方法论,欢迎一起探讨。 一、数据库架构 我们以mysql的架构为例,进行说明。 最上层用于连接、线程处理;第二层中包含了大多数 的核心服务,包括了对 SQL 的解析、分析
on 2017-11-29 | by wier 0

水平分库如何做到平滑扩展

上一篇关于《一致性hash在DynamoDB上的应用》的介绍中,有一个特别亮点,就是它无需停机就可以动态扩容。 这个对于我们常用的分库分表方案来说,有很大的优势,分库分表的扩容是一件头疼的问题,如果采用对db层做一致性hash,或是中间价的支持,它的成本过于高昂了,如果不如此,只能停机维护来处理,对高可用性会产生影响。 那是否有方案,既可以快速扩展,又不降低可用性?这一篇,我们聊聊分库分表的扩展方案,供大家一起探讨。 一、水平分库扩展问题 为了增加db的并发能力
on 2017-11-22 | by wier 0

一致性hash在DynamoDB上的应用

一致性哈希在维基百科中,是这么定义的 一致哈希是一种特殊的哈希算法。在使用一致哈希算法后,哈希表槽位数(大小)的改变平均只需要对 K/n个关键字重新映射,其中K是关键字的数量, n是槽位数量。然而在传统的哈希表中,添加或删除一个槽位的几乎需要对所有关键字进行重新映射。 ​这一篇借助这个主题,顺便来了解下Dynamo在一致性hash上的应用,熟悉其应用场景以及原理。 一、dynamo特点介绍 dynamo 的中文意思是发电机,意思是像发电机一样,提供源源
on 2017-11-15 | by wier 0

如何合理的规划一次jvm性能调优

这是jvm优化系列第三篇: jvm优化——垃圾回收 jvm优化——监控工具 JVM性能调优涉及到方方面面的取舍,往往是牵一发而动全身,需要全盘考虑各方面的影响。但也有一些基础的理论和原则,理解这些理论并遵循这些原则会让你的性能调优任务将会更加轻松。为了更好的理解本篇所介绍的内容。你需要已经了解和遵循以下内容: 1、已了解jvm 垃圾收集器 2、已了解jvm 性能监控常用工具 3、能够读懂gc日志 4、确信不为了调优而调优,jvm调优不能解
on 2017-10-25 | by wier 0

jvm优化必知系列——监控工具

这是jvm优化系列第二篇: jvm优化——垃圾回收 通过上一篇的jvm垃圾回收知识,我们了解了jvm对内存分配以及垃圾回收是怎么来处理的。理论是指导实践的工具,有了理论指导,定位问题的时候,知识和经验是关键基础,数据可以为我们提供依据。 在常见的线上问题时候,我们多数会遇到以下问题: 内存泄露 某个进程突然cpu飙升 线程死锁 响应变慢...等等其他问题。 如果遇到了以上这种问题,在线下可以有各种
on 2017-10-18 | by wier 0

jvm优化—— 图解垃圾回收

从这篇开始我们开始探讨一些jvm调优的问题。在jvm调优中一个离不开的重点是垃圾回收,当垃圾回收成为系统达到更高并发量的瓶颈时,我们就需要对jvm中如果进行“自动化”垃圾回收技术实施必要的监控和调节。 这是jvm优化系列第一篇,其他请看以下: jvm优化必知系列——监控工具 对于调优之前,我们必须要了解其运行原理,java 的垃圾收集Garbage Collection 通常被称为“GC”,它诞生于1960年 MIT 的 Lisp 语言,经过半个
on 2017-10-11 | by wier 0