所在的位置: mysql >> mysql市场 >> 连载mysql内幕第一章

连载mysql内幕第一章

数据库:

物理操作系统文件或其他文件类型的结合。

实例:

mysql数据库由后台线程以及一个共享内存区组成。mysql被设计为一个[单进程多线程架]构的数据库。也就是说mysql数据库实例在系统上的表现就是一个进程。

mysql数据库体系结构:

1.连接池组件2.管理服务和工具组件3.sql接口组件4.查询分析器组件5.缓冲(cache)组件6.插件式存储引擎7.物理文件tips:存储引擎是基于表的而不是数据库

存储引擎

InnoDB:

*其设计目标主要面向在线事务处理(OLTP)的应用。其特点是行锁设计、支持外键,并支持类似于Oracle的非锁定读,即默认读取操作不会产生锁。从MySQL数据库5.5.8版本开始,InnoDB存储引擎是默认的存储引擎。*InnoDB存储引擎将数据放在一个逻辑的表空间中,这个表空间就像黑盒一样由InnoDB存储引擎自身进行管理。从MySQL4.1(包括4.1)版本开始,它可以将每个InnoDB存储引擎的表单独存放到一个独立的ibd文件中。*同时,使用一种被称为next-keylocking的策略来避免幻读(phantom)现象的产生。*供了插入缓冲(insertbuffer)、二次写(doublewrite)、自适应哈希索引(adaptivehashindex)、预读(readahead)等高性能高科用的功能。

MyISAM:

*MyISAM存储引擎不支持事务、表锁设计,支持全文索引,主要面向一些OLAP数据库应用*MyISAM存储引擎的另一个与众不同的地方是它的缓冲池只缓存(cache)索引文件,而不缓冲数据文件,这点和大多数的数据库都非常不同。MyISAM存储引擎表由MYD和MYI组成,MYD用来存放数据文件,MYI用来存放索引文件。*在MySQL5.0版本之前,MyISAM默认支持的表大小为4GB,如果需要支持大于4GB的MyISAM表时,则需要制定MAX_ROWS和AVG_ROW_LENGTH属性。从MySQL5.0版本开始,MyISAM默认支持TB的单表数据*缓存索引的缓冲区最大只能设置为4GB。

NDB集群引擎:

*NDB存储引擎是一个集群存储引擎,类似于Oracle的RAC集群,不过与OracleRACshareeverything架构不同的是,其结构是sharenothing的集群架构,因此能提供更高的可用性。*复杂的连接操作需要巨大的网络开销,因此查询速度很慢。

memory:

*将表中的数据存放在内存中,如果数据库重启或发生崩溃,表中的数据都将消失。它非常适合用于存储临时数据的临时表,以及数据仓库中的纬度表。Memory存储引擎默认使用哈希索引,而不是我们熟悉的B+树索引。*MySQL数据库使用Memory存储引擎作为临时表来存放查询的中间结果集(intermediateresult)。如果中间结果集大于Memory存储引擎表的容量设置,又或者中间结果含有text或blob列类型字段,则MySQL数据库会把其转换到MyISAM存储引擎表而存放到磁盘中。之前提到MyISAM不缓存数据文件,因此这时产生的临时表的性能对于查询会有损失。

Archive:

*使用zlib算法将数据行(row)进行压缩后存储,压缩比一般可达1∶10。

Maria:

*存储引擎的特点是:支持缓存数据和索引文件,应用了行锁设计,提供了MVCC功能,支持事务和非事务安全的选项,以及更好的BLOB字符类型的处理性能。

mysql连接:

*连接MySQL操作是一个连接进程和MySQL数据库实例进行通信。从程序设计的角度来说,本质上是进程通信

TCP/IP连接:

*在通过TCP/IP连接到MySQL实例时,MySQL数据库会先检查一张权限视图,用来判断发起请求的客户端IP是否允许连接到MySQL实例。

------powergeekloveandshare




转载请注明:http://www.aierlanlan.com/rzdk/3557.html