赞
踩
一、数据库和数据库实例的概念
在数据库领域中有2个词很容易混淆——数据库(database)和实例(instance)
1、数据库
物理操作系统文件或其他形式文件类型的集合。在MySQL数据库中,数据库文件可以是frm、MYD、MYI、ibd结尾的文件。当使用NDB引擎时,数据库的文件可能不是操作系统上的文件,而是存放于内存之中的文件,但是定义仍然不变。
2、数据库实例
MySQL数据库由后台线程以及一个共享内存区组成。共享内存可以被运行的后台线程所共享。需要牢记的是,数据库实例才是真正用于操作数据库文件的。
3、数据库与实例之间的关系
在MySQL数据库中,实例与数据库的关系通常是一一对应的,即一个实例对应一个数据库,一个数据库对应一个实例。在集群情况下可能存在一个数据库被多个数据实例使用的情况。
MySQL数据库实例在系统上的表现就是一个进程。在Linux操作系统中通过以下命令启动MySQL数据库实例,并通过命令ps观察MySQL数据库启动后的进程情况:[root@multi_instance ~]# systemctl start mysqld
[root@multi_instance ~]# systemctl status mysqld
● mysqld.service - MySQL Server 3306
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; disabled; vendor preset: disabled)
Active: active (running) since Tue 2018-09-18 02:25:21 EDT; 10s ago
Docs: man:mysqld(8)
https://dev.mysql.com/doc/refman/8.0/en/using-systemd.html
Main PID: 2201 (mysqld)
CGroup: /system.slice/mysqld.service
└─2201 /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --pid-file=/data/mysql/mysql...
Sep 18 02:25:21 multi_instance systemd[1]: Started MySQL Server 3306.
Sep 18 02:25:21 multi_instance systemd[1]: Starting MySQL Server 3306...
[root@multi_instance ~]# ps aux | grep mysql
mysql 2201 5.5 7.0 1754304 131132 ? Ssl 02:25 0:01 /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --pid-file=/data/mysql/mysql.pid
root 2231 0.0 0.0 112704 968 pts/0 S+ 02:25 0:00 grep --color=auto mysql
4、数据库实例的启动
MySQL数据库中,可以没有配置文件,在这种情况下,MySQL会按照编译时的默认参数设置启动实例。[root@multi_instance ~]# mysql --help | grep my.cnf
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
通过上面的命令可以看到,MySQL数据库是按“/etc/my.cnf→/etc/mysql/my.cnf→/usr/local/mysql/etc/my.cnf→~/.my.cnf”的顺序读取配置文件的。
问题1:如果几个配置文件中都有同一个参数,MySQL数据库以哪个配置文件为主?
答:MySQL数据库会以读取到的最后一个配置文件中的参数为准。
问题2:如果配置文件不在上述路径下或配置文件的名字不是my.cnf,此时该如何处理?
二、MySQL体系结构
再来回忆下数据库与数据库实例的理解。
数据库是由一个个文件组成(一般来说都是二进制的文件)的,要对这些文件执行诸如select、insert、update和delete之类的数据库操作是不能通过简单的操作文件来更改数据库的内容,需要通过数据库实例来完成对数据库的操作。
1、MySQL数据库体系结构单进程多线程
like Microfote SQL Server
Oracle多进程架构(except Windows)
插件式存储引擎架构
Like Linux file system。一个表是一个分区,引擎就是分区的文件系统
存储引擎的对象是表
show tables status:可以看到每个表对应的是哪个存储引擎
重点学习与了解的存储引擎为InnoDB
2、MySQ
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。