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》概译 锁的粒度

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