日期:2014-05-16  浏览次数:20845 次

有关MySQL(笔记)
1.什么是MySQL

 MySQL是一个小型关系型数据库管理系统,开发者为瑞典
MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。
由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,
许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
MySQL官方网站:http://www.mysql.com

2.MySQL历史
1979年,报表工具,数据引擎
1996年,MySQL 1.0 (3.11.1)发布,支持SQL
2000年,成立MySQL AB公司
2008年1月,Sun公司以10亿美元收购MySQL AB公司
2009年4月,Oracle公司以74亿美元收购Sun公司

3.MySQL里程碑
3.11.1 First public release
3.23 集成BerkeleyDB,支持事务,抽象出Storag Engine
4.1 重大改进,子查询、unicode、c/s通信协议
5.0 stored procedure、view、triggers、query optimizer
5.1 FileNDB、recordreplication

4.MyISAM vs InnoDB

MyISAM特点:

数据存储方式简单,使用B+ Tree进行索引
使用三个文件定义一个表:..MYI .MYD .frm
少碎片、支持大文件、能够进行索引压缩
二进制层次的文件可以移植(Linux->Windows)
访问速度飞快,是所有MySQL文件引擎中速度最快的
不支持一些数据库特性,比如事务、外键约束等
Table level lock,性能稍差,更适合读取多的操作
表数据容量有限,一般建议单表数据量介于50w–200w
增删查改以后要使用myisamchk检查优化表

InnoDB特点:
使用Table Space的方式来进行数据存储(ibdata1, ib_logfile0)
支持事务、外键约束等数据库特性
Rows level lock ,读写性能都非常优秀
能够承载大数据量的存储和访问
拥有自己独立的缓冲池,能够缓存数据和索引
在关闭自动提交的情况下,与MyISAM引擎速度差异不大

在MySQL 5.0里面,MyISAM和InnoDB存储引擎性能差别并不是
很大,针对InnoDB来说,影响性能的主要是innodb_flush_log_at_trx_commit
这个选项,如果设置为1的话,那么每次插入数据的时候都会自动提交,导致性能急剧下降,应该是跟刷新日志有
关系,设置为0效率能够看到明显提升,当然,同样你可以SQL中提交
“SET AUTOCOMMIT = 0”来设置达到好的性能。同时也可以看出值得使用InnoDB来替代MyISAM
引擎来进行开发,毕竟InnoDB有多数据库特性、更良好的数据存储性能和查询性能