目录
1.数据库和实例
数据库(database):物理操作系统文件或其他形式文件的集合;是依照某种数据模型组织起来并存放于二级存储器中的数据集合。通常表现为:frm、MYD、MYI、ibd结尾的文件。
由一个个文件组成(一般来说都是二进制文件),要对这些文件进行增删改查,则需要通过数据库实例来完成。
实例(instance):MySQL数据库由后台线程及一个共享内存区组成。共享内存可以被运行的后台线程所共享。数据库实例是真正用于操作数据库文件的。
可以理解为应用编程实例的思想在一台服务器里面启动多个mysqld进程。
用户对与数据库数据的任何操作(增删改查),都是在数据库实例下进行的,应用程序只有通过数据库实例才能和数据库打交道。
2.MySQL体系结构
Connection Pool:连接池组件,管理缓冲用户连接,线程处理等需要缓存的需求
Management Serveices &Utilities:管理服务和工具组件
SQL Interface:SQL接口组件,接受用户的SQL命令,并且返回用户需要查询的结果。比如select from就是调用SQL Interface。
Parser:查询分析器组件SQL命令传递到解析器的时候会被解析器验证和解析。解析器是由Lex和YACC实现的,是一个很长的脚本。
3.存储引擎
当数据库进行数据操作的时候就需要用到存储引擎
一 、Innodb
支持事务,是事务安全的,提供行级锁与外键约束,有缓冲池,用于缓冲数据和索引。
适用场景:用于事务处理,具有ACID事物支持,应用于执行大量的insert和update操作的表。
二 、MyISAM
不支持事务,不支持外键约束,不支持行级锁,操作时需要锁定整张表,不过会保存表的行数,所以当执行select count(*) from tablename时执行特别快。5.5.8之前
适用场景:用于管理非事务表,提供高速检索及全文检索能力,适用于有大量的select操作的表,如 日志表
三 、MEMORY
使用存在于内存中的内容创建表,每一个memory只实际对应一个磁盘文件。因为是存在内存中的,所以memory访问速度非常快,而且该引擎使用hash索引,可以一次定位,不需要像B树一样从根节点查找到支节点,所以精确查询时访问速度特别快,但是非精确查找时,比如like,这种范围查找,hash就起不到作用了。另外一旦服务关闭,表中的数据就会丢失,因为没有存到磁盘中。
适用场景:主要用于内容变化不频繁的表