MySQL介绍和优化分享2009-07MySQLMySQL基本介绍基本介绍MySQLMySQL优化方式优化方式MySQLMySQL技巧分享技巧分享QQ&&AA目录索引目录索引MySQLMySQL基本介绍基本介绍什么是什么是MySQLMySQLMySQLMySQL是一个小型关系型数据库管理系统,开发者为瑞典是一个小型关系型数据库管理系统,开发者为瑞典MySQLABMySQLAB公司。目前公司。目前MySQLMySQL被广泛地应用在被广泛地应用在InternetInternet上的中小型上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQLMySQL作为网站数据库。作为网站数据库。MySQLMySQL官方网站:官方网站:http://www.mysql.comhttp://www.mysql.com谁在用谁在用MySQLMySQLMySQLMySQL历史历史•19791979年,报表工具,数据引擎年,报表工具,数据引擎•19961996年,年,MySQL1.0(3.11.1)MySQL1.0(3.11.1)发布,支持发布,支持SQLSQL•20002000年,成立年,成立MySQLABMySQLAB公司公司•20082008年年11月,月,SunSun公司以公司以1010亿美元收购亿美元收购MySQLABMySQLAB公公司司•20092009年年44月,月,OracleOracle公司以公司以7474亿美元收购亿美元收购SunSun公司公司MySQLMySQL里程里程碑碑•3.11.1Firstpublicrelease3.11.1Firstpublicrelease•3.233.23集成集成BerkeleyDB,BerkeleyDB,支持事务,抽象出支持事务,抽象出StorageEngineStorageEngine•4.04.0集成集成InnoDBInnoDB•4.14.1重大改进,子查询、重大改进,子查询、unicodeunicode、、c/sc/s通信协议通信协议•5.0storedprocedure5.0storedprocedure、、viewview、、triggerstriggers、、queryoptimizerqueryoptimizer•5.1FileNDB5.1FileNDB、、recordreplication......recordreplication......MySQLMySQL架构架构MySQLMySQL存储引擎比较存储引擎比较MyISAMMyISAM特点特点MyISAMvsInnoDBMyISAMvsInnoDB•数据存储方式简单,使用数据存储方式简单,使用B+TreeB+Tree进行索引进行索引•使用三个文件定义一个表:使用三个文件定义一个表:.MYI.MYD.frm.MYI.MYD.frm•少碎片、支持大文件、能够进行索引压缩少碎片、支持大文件、能够进行索引压缩•二进制层次的文件可以移植二进制层次的文件可以移植(Linux(LinuxWindows)Windows)•访问速度飞快,是所有访问速度飞快,是所有MySQLMySQL文件引擎中速度最快的文件引擎中速度最快的•不支持一些数据库特性,比如事务、外键约束等不支持一些数据库特性,比如事务、外键约束等•TablelevellockTablelevellock,性能稍差,更适合读取多的操作,性能稍差,更适合读取多的操作•表数据容量有限,一般建议单表数据量介于表数据容量有限,一般建议单表数据量介于50w50w––200w200w•增删查改以后要使用增删查改以后要使用myisamchkmyisamchk检查优化表检查优化表MyISAMMyISAM存储结构存储结构MyISAMvsInnoDBMyISAMvsInnoDBMyISAMMyISAM索引结构索引结构MyISAMvsInnoDBMyISAMvsInnoDBInnoDBInnoDB特点特点MyISAMvsInnoDBMyISAMvsInnoDB•使用使用TableSpaceTableSpace的方式来进行数据存储的方式来进行数据存储((ibdata1,ibdata1,ib_logfile0ib_logfile0))•支持事务、外键约束等数据库特性支持事务、外键约束等数据库特性•Rowslevellock,Rowslevellock,读写性能都非常优秀读写性能都非常优秀•能够承载大数据量的存储和访问能够承载大数据量的存储和访问•拥有自己独立的缓冲池,能够缓存数据和索引拥有自己独立的缓冲池,能够缓存数据和索引•在关闭自动提交的情况下,与在关闭自动提交的情况下,与MyISAMMyISAM引擎速度差异不大引擎速度差异不大InnoDBInnoDB数据结构数据结构MyISAMvsInnoDBMyISAMvsInnoDBMyISAMvsInnoDBMyISAMvsInnoDB性能测试性能测试数据量/单位:万MyISAMInnoDB备注:my.cnf特殊选项插入:1w3秒219秒innodb_flush_log_at_trx_commit=1插入:10w29秒2092秒innodb_flush_log_at_trx_commit=1插入:100w287秒N/Ainnodb...