Mysql是一个可移植的数据库,几乎在所有的平台上都能运行Windowns,Mac,Linux等等。。
数据库和数据库实例的区分:
数据库:数据库是物理操作系统文件的集合,文件是以frm,MYD,MYI结尾的。
数据库实例:mysql有后台线程 一个共享内存区组成。数据库实例才是真正操作数据库文件的。
mysql:是一个单进程多线程的数据库,(Sql server也是),Oracle 在windowns 下也是(其他环境为多进程),
mysql 和 oracle 之间的区别
mysql启动的时候会读取配置文件 默认加载的顺序为(可以使用 mysql --help|grep my.cnf 命令来查看):
/etc/my.cnf -->/etc/mysql/my.cnf -->/usr/local/my.cnf -->~/etc/my.cnf
会根据当前 配置文件的参数来启动数据库,如果在启动的时候 找不到 改文件,会加载 默认的配置文件,Oracle 不行,Oracle 如果在启动的时候 找不到文件 则 会报错,
Mysql体系结构
![](https://img.haomeiwen.com/i9930243/14982971a001f5ec.png)
1.连接池组件
2.管理服务和工具组件
3.Sql接口组件
4.查询分析器组件
5.Caches(缓冲)组件
6.优化器组件
7.插件式存储引擎
8.物理文件
Mysql区别于其他数据库最重要的一点就是,插件式存储引擎,
当然,存储引擎是基于表的,而不是基于数据库的
InnoDB存储引擎:
特点:行锁设计,全文索引,支持外键,非锁定读取,支持事务,多版本并发控制(MVCC),Sql特点的4中隔离级别,插入缓冲,二次写,自适应哈希索引,和预读等功能,对于表中的数据 ,采用聚集的方式,按照主键的顺序进行存放,如果没有主键 每行会产生一个6个字节的RowId,并作为主键
MyISAm存储引擎
特点:表锁设计,全文索引,不支持事务 由两部分组成 MYD 用于存储数据文件 MYI用于存储索引文件,
NDB存储引擎
特点:是一个集群存储引擎,将所有的数据放在内存中,因此主键查找 极为快速和方便,弊端:join 的操作是在数据库层完成的,并不是在存储引擎层完成的 ,于是就带来的巨大的网络开销,因此查询速度很慢。
Memory存储引擎
特点:将表中的数据放入到内存中,数据库重启或者崩溃 数据将不存在,速度快,只支持表锁,并发性能差,
Archive存储引擎
特点:只支持Insert和Select操作,支持索引(5.1版本后),将数据进行压缩,压缩比:1:10,非常适合归档数据,如:日志信息。支持行锁,可以高并发插入操作,不支持事务,主要是提供高速的插入和压缩的功能。
存储引擎之间的比较:
![](https://img.haomeiwen.com/i9930243/e9afb7b2cf283930.png)
Mysql的连接:
其实是一个连接进程和一个mysql数据库实例进行通信。进程和进程之间的通信方式:管道和套接字。
网友评论