leveldb性能分析和表现
Leveldb是一个google实现的非常高效的kv数据库,目前的版本1.2能够支持billion级别的数据量了。 在这个数量级别下还有着非常高的性能,主要归功于它的良好的设计。特别是LSM算法。 那么数据库最怕的的随机IO他是如何解决的呢? 先说随机写,它的写都是先记录到日志文件去的,在日志文件满之前只是简单的更新memtable,那么就把随机写转化成了顺...
精选技术长文、实践记录与系统化阅读
低噪声、高可扫读;标题、摘要、来源、标签一目了然。
采集自各技术站点的近期文章。
Leveldb是一个google实现的非常高效的kv数据库,目前的版本1.2能够支持billion级别的数据量了。 在这个数量级别下还有着非常高的性能,主要归功于它的良好的设计。特别是LSM算法。 那么数据库最怕的的随机IO他是如何解决的呢? 先说随机写,它的写都是先记录到日志文件去的,在日志文件满之前只是简单的更新memtable,那么就把随机写转化成了顺...
最近针对ZK一些比较疑惑的问题,再看了一下相关代码,列举如下。这里只列官方文档中没有的,或者不清晰的。以zookeeper-3.3.3为基准。以下用ZK表示ZooKeeper。 一个ZooKeeper对象,代表一个ZK Client。应用通过ZooKeeper对象中的读写API与ZK集群进行交互。
最近在线上实际使用了一些redis服务,总结下运维的相关知识.1:redis的生产机主要为2颗Cpu,8个核心,内存32G,单盘700G的Sata盘.2:存储的数据为博客系统的积分数据.积分代表是用户的发文章积分,发评论积分,登录积分,特点即每天单个用户相关数据至多增加一次,是一个典型的读多写少系统.虽然在这个项目中将redis作为内存系统使用,本质上是落地存储.3:redis版本为2.2.5,使用Hashes存储类型.原先积分系统的后端为memcachedb,对比应用...
熟悉我的人都知道,我是一个悲观主义者。前几周跟运营同学开交流会,我说,我加入公司4年零6个月,这期间没拿出什么得意的作品来,十分惭愧。但环顾四周,4年半里还有哪些新创建的成功项目呢?博客算一个,词典算一个,公开课算一个。似乎没了。把眼光再放远一点,公司创立14年了。14年来除了游戏之外,还有哪些成功项目的光芒辐射至今呢?邮箱算一个,新闻算一个,跟帖算一个。摊开一个巴掌,再竖起另一根食指。
前几天有人问我关于firebug console的问题,其实我平时用的最多也就是console.log,相当于alert()。还真没深入了解其他的api,今天在jsmix上看到了,所以转载过来分享一下 Console API 当打开 firebug (也包括 Chrome 等浏览器的自带调试工具),window 下面会注册一个叫做 console 的对象,它提供多种方法向控制台输出信息,供开发人员调试使用。下面是这些方法的一个简单介绍,适时地运用它们,对于提高开发效率很有帮助。 console...
Super Smack 是一个强大的压力测试工具,支持 MySQL, PostgreSQL, Oracle。最开始的版本是由Sasha Pachev写成,由Jeremy Zawodny在维护,而现在,是 Tony Bourke在维护,根据 Tony Bourke 的 开发 log 来看,2005-08-30 后,super smack 就已经停止发布新的版本,但这并不妨碍我们现在继续使用它(这个工具的开发者和维护者很伟大)。 安装 安装有点点麻烦,主要是编译时会出现一些问题。
使用PHP解析XML文档时,常用simplexml_load_string函数,但如果XML很复杂(比如有命名空间),simplexml_load_string基本就没戏了,此时可以使用SimpleXMLElement。
今天的趣题来源于 IBM Ponder This 三月份的谜题。 大家应该都听说过这个老题目:有 1000 个一模一样的瓶子,其中有 999 瓶是普通的水,有一瓶是毒药。任何喝下毒药的生物都会在一星期之后死亡。现在,你只有 10 只小白鼠和一星期的时间,如何检验出哪个瓶子里有毒药? 这个问题的答案也堪称经典:把瓶子从 0 到 999 依次编号,然后全部转换为 10 位二进...
Puppet在一款自动化系统配置管理的工具,它可以让你在很短的时间内对大量硬件和系统基本类似的系统,进行统一的系统配置管理。 说的简单点,就像开网吧,你需要对网吧的每一台机器安装操作系统,配置完全一样的软件,比如QQ和360,供网友上网,在系统和软件有损坏时,很简单的一个恢复操作就可以让机器回到刚刚安装好操作系统和软件的状态。 Puppet就是可以干这个事儿的,不同在于,Puppet是给网络管理员用的,而针对的系统多是*ni...
由于公司业务需要,花两周时间实现了一个小型的支付系统,麻雀虽小五脏俱全,各种必须的模块如账户加锁,事务性保证,流水对帐等都是有完整实现的,整个开发过程中有很多经验积累,...
之前,我们有发表过CSS文字渐变效果,但是其实那并不是纯粹的基于CSS的渐变,它需要一张半透明渐变的png图片。今天我们将介绍两种使用CSS3实现实现文字的方法。嗯,只有webkit浏览器支持,...
本文的标题只是一个猜想,并不是我坚信的观点。事实上,我这几年自觉学到的重要东西之一,就是如何在开发过程中分工,如何信任队友开发的组件,如何组织许多人做同一个项目。 可是,如果这是一个骗局呢?那也未尝不是一种可能。 这个世界上我们需要做的软件可能没有太多真正庞大到需要很多人合作才做的出来。需要配置产品经理,需要设计人员,需要前端开发,后端开发等等。 更多时候,你需要很多人一起来完成仅仅是因为别人都这...
以服务器内存为4G 修改/etc/sysctl.conf文件 (ROOT账户) kernel.shmmax = 2147483648 //公式:2G*1024*1024*1024=2147483648(字节) //表示最大共享内存,如果小的话可以按实际情况而定,一般为物理内存的一半(单位:字节) kernel.shmmni=4096 //表示最小共享内存固定4096KB(由于32位操作系统默认一页为4K) kernel.shmall=1048576 //公式:4G*1024*1024/4K = 1048576(页) //表示所有内存大小(单位:页) kernel.sem=250 32000 100...
在做一个 Gearman 来现在一个分布式时,我想当 MySQL 有更新时,自动的使用 MySQL 的触发器来提交更新到集群的队列中,在这个项目中,看到 MySQL 的触发器(TRIGGER)非常合适和 Gearman 的 UDF 配合...
有时我们要加入大量的机器到 Cacti ,直接修改 Cacti 还是很复杂的。所以最好还是通过他本身提供的工具来实现。 Cacti 早就为我们想到过这个问题了。这些工具就在 cacti/cli 目...
又一日本的项目,日本的 Perl 水平真不错,共享精神更加是好。相关的服气他们的这些啊。下面介绍的这个项目是很久以前见到的,不错的东西。介绍给大家。
由字面意思来看NodeList是DOM操作(getElementsByTagName等)取出来的集合,而不是普通的数组,但是他们有数组的一些属性,例如length、下标索引,但是他们也有自己的属性,例如item,另外NodeList最大的特点就是时效性(live)。
数据库 Sharding 目前已经是数据层架构的家常便饭了,随着越来越多的人不断的通过 Sharding 技术来提升数据层的扩展能力,Sharding 本身所带来的各种弊端也开始不断的显露出来了。最近和朋友聊天的时候针对 Sharding 带来的问题做了一些交流,记录之: 急于 Sharding,分区键考虑不充分,影响业务发展 Sharding 本身是一个需要慎重对待的事情,尤其是分区键的选择。好的分区键会让整个系统基本上对应用没有影响,但是如果选择了一...
微格式(Microformat),是建立在已有的、被广泛采用的标准基础之上的一组简单的、开放的数据格式。是把语义嵌入到HTML以便有助于分离式开发而制定的一些简单约定,是兼顾人机可读性设计的数据表达方式,对Web网页进行语义注解的方法。这种方法依托于标准的Web页面写作技术,例如,XHTML,这样引入语义信息对浏览器等所有现存的Web技术冲击最小。采用Microformat的 Web页面,在XHTML文档中给一些标签(Tag)增加一些属性(attribut...
count(*), count(time)和count(id)的对比. 结果有较大变化. 当表的字段只有2个且查询条件较宽松(即符合条件的记录数较多)时, count(id)比count(*)快很多, 但是, 当表中还有其它的字段时, count(id)反而更慢了. 虽然id是主键, time是索引列, 但是select count(id) where time并没有用到索引, 而是进行全表扫描. 当对count(*)进行ignore key(time)时, 查询时间和count(id)相同. 证明当结果集较大时索引导致查询变慢, 应该是全表扫描进行的是连续的磁盘IO和内存操作, 而使用索引是进行随机的磁盘IO和内存操作, 并且MyISAM存储索引的BTree结构占用更多的空间. 当WHERE条件约束更严格, total的值小到一定程度时, 全表扫描比使用索引慢, 因为索引极大减少了磁盘IO和内存操作.