0%

1. Phoenix索引

  • 全局索引:适合读多写少的场景。写数据时因为索引表分布在不同数据节点,跨节点数据传输带来巨大的性能消耗。
    • 全局索引必须是查询语句中所有列都包含在全局索引中,它才会生效。
1
2
3
4
5
6
7
8
9
create index my_index on my_table (v3);
select v1 from my_table where v3 = '13406157616';
此时不会走索引,因为检索列不在全局索引中,有以下三种方法使它使用索引:
1. 使用覆盖索引 这是全局索引
CREATE INDEX cover_index ON my_table(v3) INCLUDE (v1);
2. 使用 Hint 强制索引
SELECT /*+ INDEX(my_table my_index) */ v1 FROM my_table WHERE v3 = '13406157616';
3. 使用本地索引
CREATE LOCAL INDEX local_index on my_table (v3);
Read more »

MySQL索引

参考文档

1. 多页结构

OS存储数据按页来存储,一页是4KB,读取数据也是一次读一页,原因是程序局部性的概念,大意是“一个程序在访问了一条数据之后,在之后会有极大的可能再次访问这条数据和访问这条数据的相邻数据”。

MySQL的InnoDb引擎中,一页是16KB。页内部存储数据是采用了链表的结构,链表的查询很慢,采用的优化措施就是在每一页添加页目录。每个目录项会存放自己这个目录项当中最小的id,在查询时先找在哪个目录,然后再逐条查找。而这种方式能成立的原因在于数据库在用户插入数据时会默认按照主键排序,否则按照页目录来查找就会出现问题。

Read more »

B-树和B+树

1. B-树

1.1 B-树就是B树

英文名字叫做B-tree,中间的短线是英文连接符,只是翻译的时候将短线翻译成了减号。
全称Balance-tree(平衡多路查找树),平衡的意思是左边和右边分布均匀。多路的意思是相对于二叉树而言的,二叉树就是二路查找树,查找时只有两条路,而B-tree有多条路,即父节点有多个子节点。

Read more »

红黑树

1. 红黑树

数组查询快,链表插入删除快 => 二叉树兼具两者优点 => 但是二叉树可能存在特殊情况,即一侧子树非常长,另一侧很短,不平衡 => 红黑树,即二叉平衡树,是一个去除二叉树顶端优势的解决方案,从而达到树的平衡。

红黑树,Red-Black Tree 「RBT」是一个自平衡(不是绝对的平衡)的二叉查找树(BST),树上的每个节点都遵循下面的规则:

Read more »

面向对象编程

摘自知乎

理解:参考Alan Kay的原话来看,对象就像是细胞,互相交流是靠消息传递。OOP对它只是消息传递,本地保留和保护,隐藏状态进程,极端的后期绑定。

原文如下:

面向对象编程(OOP),是一种设计思想或者架构风格。

Read more »