- 博客(8)
- 资源 (1)
- 收藏
- 关注
原创 MySQL存储引擎接口
MySQL提供了访问不同的存储引擎数据表的虚拟层API。过去,这些接口被称之为"table handler".现在有了新的介绍——storage engine.目前我们所提到的storage engine,往往是与存储/读取数据的相关代码,而table handler指的是storage engine与MySQL优化器的接口.抽象接口极大地促进MySQL加入其它存储引擎的步伐,抽象接口
2013-09-26 13:42:09
2784
原创 MySQL的并发访问与锁定
多个客户端同时访问/修改同一数据时,合适的锁定机制需要保证数据的一致性。存在三个方式解决这个问题: 表级锁、页级锁、行锁,每个方式都有各自的优劣势。表锁: 逻辑简单,不容易引起bug,在获取锁时有比较好的性能,容易避免死锁。从另外角度看,存在大量并发读写时,锁定整个表导致应用比较差的性能。行锁: 代价是实现复杂,但高并发性能。低概率锁竞争但高概率发生bug。避免死锁难度较大,所
2013-09-26 13:41:26
1633
原创 MySQL存储引擎
MySQL存储引擎>>讨论MySQL中主要的几个存储引擎,复杂的不同处理细节,无法做到每个存储引擎都细化。仅是提供代码中的核心部分指引。>>不同存储引擎的特性事务支持: InnoDB、NDB索引支持: MyISAM(B-tree、R-tree、full text) InnoDB(B-tree) NDB(Hash、B-tree)缓存
2013-09-26 13:40:51
1372
原创 MySQL复制
实现方式:SQL级别复制、行级别复制基于语句复制,修改数据的每个SQL语句都会被LOG.然后语句会在同一字符集和同一上下文情况下在从服务器重放。基于语句复制只需要在主从服务器之间传输少量的数据。反之,需要记录大量的执行上下文信息,以便从服务器实现主服务器相同环境下重放更新操作。然而,上下文有时候无法提供。随着新SQL功能频繁加入,基于语句复制变得很难维持相应的更新。行复
2013-09-26 13:39:59
1095
原创 MySQL事务
MySQL体系中,实现事务的责任大部分落在存储引擎上。事务日志细节、行或页锁、实现事务隔离级别、提交与回滚、以及其他事务关键属性基本都是在存储引擎级别实现,所以,存储引擎跟SQL层交互需要使用统一的接口。存储引擎事务实现综述集成第三方存储引擎,需要定义两部分:定义与实现handler子类以及handlerton实现不可避免,事务的实现一定需要实现handler子类的大量虚拟
2013-09-26 13:39:30
1309
原创 MySQL分析器与优化器
>>>>分析器由词法扫描器与语法分析器构成词法扫描器1、MySQL实现自己的词法扫描器2、人工实现信息编排以便优化器获取信息,自动生成代码无法做到3、实现上下文关联的token意义解析4、关键字列表symbols[]在sql/sql_lex.h,功能名称列表sql_functions[]在sql/sql_lex.h5、所有关键词表gen_lex_hash(sql/g
2013-09-26 13:38:05
2563
原创 MySQL线程化请求处理
当实现一个服务器之时,首先面临着一个进退两难的选择,选择多进程还是多线程结构。两者各有良莠。从一开始,MySQL便选择了多线程。线程与进程两者最大的不同可能是heap的同享,这个是选择哪种模型的潜在依据。线程优势1、内存利用的简化2、对于全局数据的访问无需高级技术3、快速创建4、内核调度成本线程劣势1、异常隔离要求2、错误代价高3、同步BUG
2013-09-26 13:36:26
1480
原创 MySQL客户端与服务器协议
关于总观: 1、监听tcp协议之上 2、握手验证先行 3、Command in one packet,Responses may in several.包(packet)格式 压缩与非压缩,取决于握手阶段,客户端与服务器协商 抛开压缩项,包分为两种:客户端请求与服务器回复关于服务器回包: 数据包、数据流结束
2013-09-26 13:12:22
4088
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人