摘要:
先占个位置动态哈希表第一种简单的动态哈希方法 假使一开始的数值空间大小为4,即0~3slot,每个slot可以存3个元素,那么假使0号slot存放有4,16,20;当12想进入哈希表的时候,发现冲突,那么此时将哈希表的数值空间翻倍,新的空间为0~7,那么12mod8=4,则12进入4号slot,原来0号slot中的mod8等于4的元素也需要移动到4号slot,称0号slot为4号slot的兄弟(buddy)slot,则当新增一个元素并且发生冲突时,做出的改动、也是优点:空间翻倍,buddy slot中的部分元素移动到新slot。 优点 一个冲突只会引起小部分元素的移动,减少了响应时间。 ... 阅读全文
摘要:
前几天了解了一下什么是一致性哈希,一致性哈希的原理如下原理1,有一个数值空间,一般选择的是0~2的32次方2,将这个数值空间当作一个首尾相接的环3,从一个节点A开始,逆时针查找到上一个节点B,这两个节点之间的数值空间会映射到节点A上4,为了使数据分布均匀,保持平衡,增加虚拟节点的概念,将一个真实节点分为几个虚拟节点,各个真实节点的虚拟节点随机划分数值空间,映射方法同 3 ,还要增加一步,就是当数值空间映射到虚拟节点时,需再映射到真实节点上,这一步看你自己设计了。说白了就是讲数值空间和节点之间加一个中间人,都去跟中间人对接,中间人负责接收数据,然后分发数据到节点,当你需要扩展的时候两边不用动,动 阅读全文
摘要:
在做数据分页查询的时候会使用 limit [start],[limit],当表中数据量很大,并且分页到后面时,速度会很慢,因为数据库要扫描剔除很多数据,这个过程耗费大量时间。为了提高分页查询的速度,可以采用如下办法:按主键分页,得到表的主键最小值和步长,假使主键字段为id,最小值为1,步长为1,那么可以使用WHERE id>1 limit 1000 到后面就是WHERE id>10000000 limit 1000,会极大的提高查找速度,因为使用了范围查找会用到索引。关键就在与要用到索引 阅读全文
摘要:
最近在做插入优化的一些工作,总结一下提高插入速度的方法:1,InnodB,保证插入时不会表锁2,多进程插3,插之前ALTER TABLE table1 DISABLE KEYS;4,插入之后ALTER TABLE table1 ENABLE KEYS;以下两条还没有实验、使用5,set commit=0结束之后commit。这一点还没有实验。6,将数据放到多个库中,同时插 阅读全文