华为公司网站建设相关内容设计网络推广方案
文章目录
- 1. centos7 安装Mysql
- 2. 数据库的概念
- 3. 数据库下创建库,表
- 4. 库,表 的本质
- 5. 数据库服务器 和 库 ,表的关系
- 6. MySQL架构
- 7. 存储引擎
前言: 数据库是对数据进行管理的软件。
1. centos7 安装Mysql
- 需要把系统自带的MySQL给删除掉:
(1)
ps ajx |grep mariadb
这可以查询,你系统原有的mysql的运行情况:
(2)systemctl stop mariadb.service
,停止mysql服务的运行
(3)rpm -qa | grep mysql
,卸载mysql
(4)sudo yum remove mariadb
,移除原有安装包
- 获取并安装yum源
(1)
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
,获取官方的yum源
(2)rpm -Uvh mysql-community-release-el7-5.noarch.rpm
,安装yum源
(3)ls /etc/yum.repos.d/ -al
,监测yum源安装情况:
- 安装MySQL服务
(1)
yum install -y mysql-community-server
,都是在root下进行安装的,普通用户就得加个sudo。
(2)systemctl start mysqld.service
,启动MySQL服务。
(3)ps axj |grep mysqld
查看MySQL服务的情况。
- 配置MySQL
(1) 配置密码,这里不讲,因为有点小复杂,但是可以让MySQL服务,开机自启动,这样其实是可以满足我们日常学习的:
启动MySQL服务成功后,输入:systemctl enable mysqld
systemctl daemon-reload
注意,如果不配置密码的话,想要正常使用mysql必须是root用户。(2) 配置一下my.cnf,主要是数据库客户端和服务器的编码格式
vim /etc/my.cnf
,然后把之前的都清空,拷贝以下内容:
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
[mysql]
#default-character-set=utf8 ,暂不设置,mysql有bug,汉字不回显
比特就业课
[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
port=3306
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
character-set-server=utf8
default-storage-engine=innodb
- 使用MySQL:
在命令行,输入mysql,就能使用MySQL了:
2. 数据库的概念
数据库是用于管理数据的软件,想吧,其实存数据肯定是用文件保存,但是不通过数据库直接把数据保存到文件中,会存在以下弊端:
- 文件的安全性问题
- 文件不利于数据查询和管理
- 文件不利于存储海量数据
- 文件在程序中控制不方便
数据库它也是把数据保存到文件中,但是 数据库的保存,更为严格(有约束),查找数据也很方便,并且适合在程序中控制。
3. 数据库下创建库,表
首先肯定得启动MySQL服务,然后输入create database
+ 库名;
,sql语句必须以;
结尾。
比如:
(1)我创建一个库,库名是good,create database good
。
(2)然后,使用此库,use good
:
(3)再创建一个表,create table students
:
(4)向表中插入数据:
insert into students (id,name,sex) values(1,"Bob","M")
;insert into students (id,name,sex) values(2,"JR","M")
;insert into students (id,name,sex) values(3,"WU","F")
;
(5)查看表中数据:
select * from students
:
4. 库,表 的本质
(1) 打开 /etc/my.cnf:
看到这一行了吧,数据库中的库,表都存在这个路径下。
(2) 进入 /var/lib/mysql:
(3) 看到了吧,上面创建的库是good,本质就是创建了一个目录:我们进入到这个目录
(4) 创建表的本质,就是 在目录里创建 特定的文件。
5. 数据库服务器 和 库 ,表的关系
- 所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,
- 一般开发人员会针对每一个应用创建一个数据库。
- 为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。
数据库服务器、数据库和表的关系如下:
数据库是一个网络服务,我们是客户端,先是我们启动客户端,与服务端进行连接后,服务端提供网络服务,这个服务就是 对数据的管理,可以创建一个库,其实就是创建一个目录,然后在库中创建表,其实就是在目录下创建特定文件。
所以说 数据库也是将数据存在文件中,直接和文件打交道的是数据库的存储引擎。
6. MySQL架构
MySQL 是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如 Unix/Linux、Windows、Mac 和Solaris。各种系统在底层实现方面各有不同,但是 MySQL 基本上能保证在各个平台上的物理体系结构的一致性。
- connectors:指的是不同语言和SQL的交互
- Management Serveices & Utilities: 系统管理和控制工具
- connection pool:管理缓冲用户连接,线程处理等需要缓存的需求。每个用户连接后,都会分配一个线程去处理用户的请求,这是一个线程池
- SQL Interface: SQL接口,接受用户的SQL命令,并且返回用户需要查询的结果。比如select from就是调用SQL Interface
- Parser: 解析器,SQL命令传递到解析器的时候会被解析器验证和解析。解析器是由Lex和YACC实现的,是一个很长的脚本。
- Optimizer: 查询优化器,SQL语句在查询之前会使用查询优化器对查询进行优化。
- Cache和Buffer: 查询缓存。buffer是写缓存,cache是读缓存。
- 存储引擎接口:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。
这就是MySQL的大体框架,然后我们来看 MySQL的执行过程:
1、连接:客户端向 MySQL 服务器发送一条查询请求,与connectors交互:连接池认证相关处理。
2、缓存:服务器首先检查查询缓存,如果命中缓存,则立刻返回存储在缓存中的结果,否则进入下一阶段
3、解析:服务器进行SQL解析(词法语法)、预处理。
4、优化:再由优化器生成对应的执行计划。
5、执行:MySQL 根据执行计划,调用存储引擎的 API来执行查询。
6、结果:将结果返回给客户端,同时缓存查询结果。
7. 存储引擎
查看存储引擎:show engines;
存储引擎的对比: