赞
踩
其实我想写一篇跟Mysql有关的博客很久了,一方面是想自己做一个较为全面的知识总结,一方面,现在再看《Mysql技术内幕-InnoDB存储引擎》。写下这篇文章,目的方便日后自己对Mysql方面知识的复习,也希望大家能够收获满满,主要是面向有一定的Mysql知识基础的人查缺补漏or复习用的。(讲道理,我写这篇文章还是花了很多功夫,尽量把每个知识点都讲到位,很多都是面试容易问的知识点,希望大家认真看,重点是1.3.1小结的InnoDB引擎)
1.数据库的概念:
物理操作系统文件或者其他形式文件类型的集合。在Mysql中,数据库文件可以是frm、ibd、MYD等形式的文件。
2.实例:
Mysql数据库由后台线程以及一个共享内存区组成,而共享内存区可以被运行的后台线程共享。(数据库实例才是真正用于操作数据库文件的角色)
Mysql数据库实例在系统上的表现就是一个进程:
ps -ef | grep mysql
结果:
稍微工整点的信息如下:
74 99430 1 0 3:41下午 ?? 0:03.66 /usr/local/mysql/bin/mysqld
--user=_mysql --basedir=/usr/local/mysql
--datadir=/usr/local/mysql/data
--plugin-dir=/usr/local/mysql/lib/plugin
--log-error=/usr/local/mysql/data/mysqld.local.err
--pid-file=/usr/local/mysql/data/mysqld.local.pid
--keyring-file-data=/usr/local/mysql/keyring/keyring
--early-plugin-load=keyring_file=keyring_file.so
501 996 992 0 8:00下午 ttys000 0:00.00 grep mysql
可以看出,启动实例的时候,Mysql会读取各种配置文件,根据配置文件的参数来启动数据库实例。
这里还需要强调一点,用户对数据库数据的任何操作,包括数据库定义、数据查询、数据维护、数据库运行控制等都是在数据库实例下进行的,应用程序只有通过数据库实例才能和数据库打交道。
首先来看下Mysql数据库的体系结构:
连接池:管理、缓冲用户的连接,线程处理等需要缓存的需求。
管理服务和工具组件:系统管理和控制工具,例如备份恢复、Mysql复制、集群等 。
sql接口:接受用户的SQL命令,并且返回用户需要查询的结果。
查询解析器:SQL命令传递到解析器的时候会被解析器验证和解析。(权限、语法结构)
查询优化器:SQL语句在查询之前会使用查询优化器对查询进行优化。
缓存:如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。
插入式存储引擎:存储引擎说白了就是如何管理操作数据(存储数据、如何更新、查询数据等)的一种方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型。(即存储和操作此表的类型)
物理文件
Mysql数据库区别于其他数据的最重要的特点就是其插件式的表存储引擎,提供了一系列标准的管理和服务支持。(存储引擎是基于表的,而不是数据库)
其实Mysql支持的存储引擎还挺多的,这里就主要讲两个:InnoDB和MyISAM一引擎。
先来说下这个引擎的特点:(相信大家都有一定的基础和了解的,而且我自己感觉,这些每一点拿出来都是一个面试的考点或者重要知识点,当然我会对我了解的知识做一个详细的展开(尽量!尽量!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。