摘要: 引言众所周知传统磁盘I/O是比较耗性能的,优化系统性能往往需要和磁盘I/O打交道,而磁盘I/O产生的时延主要由下面3个因素决定:寻道时间(将磁盘臂移动到适当的柱面上所需要的时间,寻道时移动到相邻柱面移动所需时间1ms,而随机移动所需时间位5~10ms)旋转时间(等待适当的扇区旋转到磁头下所需要的时间... 阅读全文
posted @ 2015-12-15 12:16 pingyuyue 阅读(739) 评论(0) 推荐(0) 编辑
摘要: 在mysql中,索引是存储引擎用于快速查找到目标记录的一种数据结构。常见的索引类型包含B树索引、哈希索引、空间索引(R-Tree)、全文索引等。索引是在存储引擎层实现的,不同的存储引擎对索引的工作方式并不一样。下面重点介绍B树索引以及innodb和myisam存储引擎。选择B树的原因读写磁盘代价最高... 阅读全文
posted @ 2015-12-15 12:16 pingyuyue 阅读(359) 评论(0) 推荐(0) 编辑
摘要: 什么是HFile HBase、BigTable以及其他分布式存储、查询系统的底层存储都采用SStable的思想,HBase的底层存储是HFile,他要解决的问题就是如果将内容存储到磁盘,以及如何高效的读取数据,HFile文件格式对特定字节存储什么内容做了规定,以便可以按照格式读取数据。 sstabl 阅读全文
posted @ 2013-12-11 11:46 pingyuyue 阅读(918) 评论(0) 推荐(0) 编辑
摘要: Hadoop是仿照google的三篇论文写的一个分布式计算框架,所以必然免不了分布式系统要解决的问题;1、分布式存储GFS ,google 有非常庞大的数据,几台甚至几百台大型服务器都无法存下,所以干脆采用廉价PC,保存在成千上万台上,这样节省了资源,但是由此也带来了很多问题,细想一下,把数据存储在很多机器上会带来什么问题?首先我要知道我的文件存到了哪个PC上,一个PC坏了是不是我的数据就丢了?所以要进行备份,具体怎么备份,这个应该可以配置,比如某个数据要有几个备份,从而请求备份的时候要做负载均衡;修改某台PC的数据其它上面的数据也要跟着修改,否则数据就不一致了啊?.......带着这些问题, 阅读全文
posted @ 2012-03-11 19:10 pingyuyue 阅读(3043) 评论(0) 推荐(1) 编辑
摘要: 备注,现在已经进入多核时代了,考虑问题要考虑多核啊volatile关键字当变量被某个线程A修改值之后,其它线程比如B若读取此变量的话,立刻可以看到原来线程A修改后的值注:普通变量与volatile变量的区别是volatile的特殊规则保证了新值能立即同步到主内存,以及每次使用前可以立即从内存刷新,即一个线程修改了某个变量的值,其它线程读取的话肯定能看到新的值;普通变量:写命中:当处理器将操作数写回到一个内存缓存的区域时,它首先会检查这个缓存的内存地址是否在缓存行中,如果不存在一个有效的缓存行,则处理器将这个操作数写回到缓存,而不是写回到内存,这个操作被称为写命中。术语英文单词描述共享变量在多个 阅读全文
posted @ 2012-02-20 22:20 pingyuyue 阅读(2279) 评论(0) 推荐(0) 编辑
摘要: 性能的思考 与单线程相比,使用多线程总会引入一些性能的开销,这些开销包括:与协调线程相关的开销(加锁、信号、内存同步),增加上下文的切换,线程的创建和消亡。 我们希望CPU做有用的事情,单线程程序即不存在调度问题,也不存在同步开销,不需要使用锁来保证数据结构的一致性。调度和线程内部的协调都要付出性能的开销; 如果可运行的线程的数目大于CPU的数量,那么OD最终会强行换出正在执行的线程,从而使其他线程能够使用CPU。这会引起上下文切换,他会保存当前运行线程的上下文,并重新调入线程的执行上下文。 切换上下文是要付出代价的;线程的调度需要操控OS和JVM中共享的数据结构;当一个新的线程呗换入... 阅读全文
posted @ 2012-02-17 19:25 pingyuyue 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 本文从操作系统层面和硬件层面介绍下并发编程底层需要了解的一些内容。 操作系统层面 任务类型 进程可以被分为I/O消耗性和处理器消耗型: I/O消耗型是指进程大部分时间用来提交I/O请求或者等待I/O请求,这样的进程经常处于可运行状态,但是通常都是运行短短的一会儿,因为他在等待更多的I/O请求时最后会 阅读全文
posted @ 2012-02-10 11:55 pingyuyue 阅读(1376) 评论(0) 推荐(0) 编辑