OneCoder

《HighPerformance MySQL》概译 事务日志

事务日志使得事务更加高效。每次数据改变的时候,存储引擎可以在内存中修改数据拷贝而不用每次都修改磁盘上数据。这速度很快。随后存储引擎会修改记录写入事务日志,该日志是在磁盘上的从而完成持久化。这也是相对高效的过程。因为,追加日志事件产生的是连续的小范围磁盘上的I/O操作,而不是大范围的随机I/O操作。然后,在随后的某时刻一个进程会更新磁盘上的表。因此,更多存储引擎都采用该技术(被称作:write...

HBase“扫描器”scanner使用和优化

HBase在扫描数据的时候,使用scanner表扫描器。HTable通过一个Scan实例,调用getScanner(scan)来获取扫描器。可以配置扫描起止位,以及其他的过滤条件。通过迭代器返回查询结果,使用起来虽然不是很方便,不过并不复杂。但是这里有一点可能被忽略的地方,就是返回的scanner迭代器,每次调用next的获取下一条记录的时候,默认配置下会访问一次RegionServer。这...

《HighPerformance MySQL》概译 隔离等级

隔离等级 隔离其实比它看起来复杂。SQL标准定义了四种隔离级别,决定了数据变化在事务内外可见或不可见。低级别的隔离等级会有更好的并发支持和更低的资源消耗。      每种存储引擎都有其独特的隔离等级实现方式。你应该从你使用的存储引擎的手册中获取更详细的信息。 下面让我们来看下四种隔离等级: 未提交读(READ UNCOMMITED) ...

《HighPerformance MySQL》概译 事务

事务 事务是一组被看做一个整体的SQL请求。该组SQL被看成是原子的。如果所有的SQL都正常执行则数据确认请求,如果其中的任何一个失效,则所有的SQL都不生效。也就是说要么全成功,要么全失效。 本节并不是针对MySQL的,如果你已经事务的ACID特性了解,那么可以直接了解MySQL的事务特性。 银行系统是一个典型的需要事务特性的例子。假设系统有两张表支票账户和储蓄表。从Jane的...

《HighPerformance MySQL》概译 锁的粒度

一种提高共享资源并发效率的方式是合理的规划锁的范围。仅仅锁住你要修改的部分当然比全表锁住要好。所以,我们尽可能的最小化锁的范围,因为不相干的部分,本身也互不干扰。 不过,也要考虑到,锁是消耗资源的。每种锁的操作都有消耗,例如:获得锁,检查锁是否可用,释放锁等。如果系统花了过多的资源在锁的操作上,那么并发的性能就会受到影响。 锁的策略就是在锁的消耗和数据安全之间寻求一种平衡,这种平衡会...

《High Performance MySQL》概译 读/写锁

今天在微博看到消息该书的中文版已经翻译完成即将发售,所以OneCoder不再进行全文翻译,只会以类似读书笔记的方式记录文章大意和自己的理解。每天阅读的不会太多,因为只是休息的时候阅读,学习的重心最近在Hadoop上。 读写锁 多个用户同时读取邮件的时候不会有什么问题,以为没有人去修改文件。但是在有人正在的读的时候删除邮件就会产生问题。所以,出于安全考虑,读也应该特别关注。 这里...

《High Performance MySQL》翻译(3) 第一章 并发控制

并发控制 任何时刻当不止一个请求想要同时修改数据时候就产生了并发控制问题。从本章我们的观点来看,MySQL需要在两层关注这个问题:服务层和存储引擎层。并发控制是一个大话题,有很多相关的理论文献发表。所以,我们仅简介一下MySQL处理并发读写的方式。你将在本章的接下来的部分看到相关信息。 我们以Unix系统上的电子邮箱为例。传统的邮箱文件格式非常简单。邮箱中的所有信息是一个接一个的连接...