MySQL开发流程介绍
五月 7, 2013 by sleebin9 · 2 Comments
1. 功能开发(Feature Development)
功能开发过程如下:
- MySQL的一个功能是指一个worklog.
- Worklog的开发要经过规格定义,设计,架构评审,代码实现,代码评审和QA评审的过程(但是这几个过程并不是严格的按照先后顺序进行的).
- MySQL的功能首先在一个功能树(feature tree,是指代码分支树)上实现.
- 功能树是从MySQL的代码主开发树TRUNK上克隆出来的(一般是开发者自己创建),开发过程中不定期从TRUNK同步.
- 当功能实现以后,必须要经过代码的评审。
- 代码评审通过后,开发树被QA接手。
- QA对功能进行测试,如发现缺陷(bugs),开发人员要进行修复.最终在测试通过后,QA将状态设置为开发过程完成(sign off).
- 一旦QA验证完毕,功能就会被合并到TRUNK中.
通过这个过程,TRUNK上会不停的累积功能和缺陷修复的代码。额外的回归测试(Regression testing)一刻不停的在TRUNK上执行,以保证TRUNK始终能够保持候选发布版本(Release Candidate)的质量。
Read more
MySQL数据库InnoDB存储引擎Log漫游(3)
四月 6, 2012 by sleebin9 · 6 Comments
本文讨论MySQL数据库InnoDB存储引擎LOG漫游的问题:
04 – Checkpoint
理论上来说,如果MySQL数据库InnoDB存储引擎的buffer足够大,就不需要将数据本身持久化。将全部的redo log重新执行一遍
就可以恢复所有的数据。但是随着时间的积累,Redo Log会变的很大很大。如果每次都从第一条记
录开始恢复,恢复的过程就会很慢,从而无法被容忍。为了减少恢复的时间,就引入了Checkpoint机制。
- 脏页(dirty page)
如果一个数据页在内存中修改了,但是还没有刷新到磁盘。这个数据页就称作脏页。
- 日志顺序号(Log Sequence Number)
LSN是日志空间中每条日志的结束点,用字节偏移量来表示。在Checkpoint和恢复时使用。
MySQL数据库InnoDB存储引擎Log漫游(2)
四月 6, 2012 by sleebin9 · 8 Comments
03 – 日志的内容
- 数据是什么
从不同的角度和层次来看,我们可以将数据库中的数据看作:
A. 关系数据
B. 元组或对象
C. 存在Page中的二进制序列
因此Log中也可以记录不同的内容:
- 物理的日志(Physical Log)
A. 记录完整的Page
B. 记录Page中被修改的部分(page中的偏移,内容和长度). Read more
MySQL数据库InnoDB存储引擎Log漫游(1)
四月 6, 2012 by sleebin9 · 22 Comments
本文是介绍MySQL数据库InnoDB存储引擎重做日志漫游
00 – Undo Log
Undo Log 是为了实现事务的原子性,在MySQL数据库InnoDB存储引擎中,还用Undo Log来实现多版本并发控制(简称:MVCC)。
- 事务的原子性(Atomicity)
事务中的所有操作,要么全部完成,要么不做任何操作,不能只做部分操作。如果在执行的过程中发生
了错误,要回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过。
- 原理
Undo Log的原理很简单,为了满足事务的原子性,在操作任何数据之前,首先将数据备份到一个地方
(这个存储数据备份的地方称为Undo Log)。然后进行数据的修改。如果出现了错误或者用户执行了
ROLLBACK语句,系统可以利用Undo Log中的备份将数据恢复到事务开始之前的状态。
除了可以保证事务的原子性,Undo Log也可以用来辅助完成事务的持久化。 Read more
一个有趣的SQL查询
三月 6, 2012 by sleebin9 · 28 Comments
有一个登录表(tmp_test),包含用户ID(uid)和登录时间(login_time)。表结构如下:
*************************** 1. row ***************************
Field: uid
Type: int(10) unsigned
Null: NO
Key: MUL
Default: NULL
Extra:
*************************** 2. row ***************************
Field: login_time
Type: timestamp
Null: NO
Key: MUL
Default: 0000-00-00 00:00:00
Extra:
问如何查询出所有在某一段时间内(如:2012-1-1至2012-1-17)连续7天都有登录的用户。
在写这个SQL时,发现一些很有意思东西,也许对大家写SQL有帮助,因此记录一下。
IT从业人员需要知道的安全知识(2)
03 – 认证(Authentication)
- 认证因子(什么东西可以用来做认证凭证)
A. Something you know
只有你知道的东西。如:口令。
B. Something you have
只有你拥有的东西。如:你的银行卡、令牌、手机等。
C. Something you are
你身体上和别人不一样的东西。如:指纹、视网膜、声音、DNA等。
同时使用多种认证因子进行认证是更安全的做法。例如,到银行取钱,需要同时有卡和密码。
网银交易,需要USB Key和密码。 Read more
IT从业人员需要知道的安全知识(1)
二月 2, 2012 by sleebin9 · 5 Comments
最近CSDN等网站被脱库的事情,闹得沸沸扬扬。身为程序员,我觉得软件开发人员自身安全意识的强弱和
安全知识的多寡会直接影响到所开发系统的安全性。从这个角度来分析,系统做的不安全有三种原因:
A. 不知道存在安全隐患
B. 使用了不适当的安全措施
C. 知道存在安全隐患,但是为了简单(也可能别的原因),置之不理。
你属于哪一种呢?
如果你属于前两种情况,请继续往下看。本文是从软件工程师的角度来写的,但是我觉得其中的一些知识,
对其他IT从业人员也有益处。因此命名为“IT从业人员需要知道的安全知识“。
00 – 系统架构 Read more
由浅入深理解索引的实现(2)
十二月 20, 2011 by sleebin9 · 16 Comments
由浅入深理解索引的实现(1)
十一月 24, 2011 by sleebin9 · 28 Comments
00 – 背景知识
- B-Tree & B+Tree
http://en.wikipedia.org/wiki/B%2B_tree
http://en.wikipedia.org/wiki/B-tree
- 折半查找(Binary Search)
http://en.wikipedia.org/wiki/Binary_search_algorithm
- 数据库的性能问题
A. 磁盘IO性能非常低,严重的影响数据库系统的性能。
B. 磁盘顺序读写比随机读写的性能高很多。
- 数据的基本存储结构
A. 磁盘空间被划分为许多大小相同的块(Block)或者页(Page).
B. 一个表的这些数据块以链表的方式串联在一起。
C. 数据是以行(Row)为单位一行一行的存放在磁盘上的块中,如图所示.
D. 在访问数据时,一次从磁盘中读出或者写入至少一个完整的Block。

