Mysql架构组成之存储引擎总结

来源:互联网 发布:文心雕龙数据库有吗 编辑:程序博客网 时间:2024/06/14 03:45

                                                                       Mysql架构总结


一、以下是mysql的架构图


1.  Connectors的意思是不同语言中与sql的交互,在第一行其中有大家最熟知的php、python、perl等。

2.  Management Tools这个是系统管理和控制的工具,在左上角框内写了很多的工具,列如我们最熟知的Security等控制工具。

3.  Sql interface(SQL接口)主要功能接受用户的sql命令,并且返回给用户,比如我们写一个select * from 就是在调用sqlinterface很好理解

4.  Parser(解析器)将sql语句分解成数据结构,并且将这个数据结构传递给后续的步骤。以后sql语句的传递和处理就是基于这个结构的,如果分解遇到了错误,那么说明这条sql语句是不合理的

5. Optimizer(查询优化器)sql语句在查询之前会使用查询优化器对查询进行优化

6. Caches&buffers(查询缓存)意思就是如果我们查询一个表有命中的查询结果,查询语句就可以直接去查询缓存中取数据

7. Engines(存储引擎)现在有很多种存储引擎,各个存储引擎的优势各不一样,最常用的MyISAM,InnoDB这两种引擎

二、MyISAM与InnoDB的区别及优缺点

在mysql5.1之前默认的存储引擎MyISAM,MyISAM存储引擎的表在数据库中,每一个表都被存放为三个表名的物理文件,首先肯定会有任何存储引擎都不可缺少的存放表结构定义信息的.frm文件,另外还有.MYD&MYI文件,存放了表数据(.MYD)和索引数据(.MYI) MtISAM文件支持三种类型的索引B-Tree R-TreeFull-text在这三个索引中经常用的就是B-Tree索引,另外B-Tree索引有一个较大的限制,就是一个索引所有字段长度之和不能超出1000个字节,它不支持事务,只有锁表。例如以下情况会造成表损坏。Mysql正在写入表时。别kill强制杀死,主机宕机等事故

1、 Innodb在功能方面最重要的一点就是对事务的支持,让innodb成为mysql最为流行的存储引

2、 锁定机制的改进,innodb改变了MyISAM的锁机制,实现了行锁。

3、 实现外键innodb实现了外键引用这一数据库的重要特征

4、 Innodb存储引擎也和MyISAM不太一样,虽然也有.FRM文件来存放表的结构,但是表数据和索引数据是存放在一起的,至于是每个单独放在一起还是所有的表存放在一起,完全都是由用户来决定的

MyIASM不支持事务,而Innodb支持,Innodb的AUTOCOMMIT默认是打开的,每条sql语句会默认被封装成一个事务,自动提交,这样会影响速度,建议还是把多条sql语句显示放在begin和commit之间,组成一个事务去提交。

Innodb的AUTOCOMMIT默认是打开的如下:

#mysql> show variables like '%autocommit%';ema;"


三、运维工程中会用到的相关选项总结:

1、-e参数 --execute=name,这个参数主要告诉mysql我要执行-e后面的某个命令,而不是通过mysql连接登陆到mysql服务上面。列如我们需要查询mysql中有哪些库具体操作如下:

#mysql  –uroot   –pxxx  -e “show databases;”


2、建议提示符定义: “\\u@\\h:\\d\\r:\\m:\\s>“

#mysql -uroot -ppwd123 --prompt=”\\u@\\h:\\d\\r:\\m:\\s>“


U:用户 H:主机 d:当前数据库 r:时 m:分 s:秒

3、--tee=name参数,这个参数用来告诉mysql,将所有的输入和输出内容都记录进文件,在我们一些较大维护变更的时候,为了方便最好是将整个操作的过程的所有输入&输出保存下来。操作如下:

mysql–uroot –pxxx   --tee=/这里跟保存路径

列如:我在/var/log/创建一个测试的日志然后在数据库中创建abc库创建tb1表然后查询测试日志是否存在。


4、然后打开测试日志查看操作过程


5、mysqladmin参数

mysqladmin提供的功能都是与mysql管理相关的各种功能,其中也可以加ping命令,ping命令可以很容易的检测mysql服务是否正常的提供服务

#mysqladmin -uroot –pxxx  -h localhost ping


以上是本机测试本机如果要远程测试的话直接把localhost改为服务器的IP地址就可以了;前提需要开放3306端口firewall-cmd--add-port=3306/tcp –permanent

6、status参数可以直接获取当前mysql服务器的几个基本的状态值,如下:

#mysqladmin -uroot -ppwd123 -h localhost status



以上就是mysql常用的一些参数,了解了之后我们开始写一个监控mysql的脚本,说白了,就是把我们以上用到的参数利用起来写一个shell脚本
shell脚本如下,也许认真看过以上的读者,那么看下面的脚本那肯定是很简单了。如下:
#!/bin/bash#检测mysql server是否正常提供服务mysqladmin -uroot -ppwd123 -h localhost ping#获取mysql当前的几个状态值mysqladmin -uroot -ppwd123 -h localhost status#获取数据库当前的连接信息mysqladmin -uroot -ppwd123 -h localhost processlist#获取当前数据库的连接数mysql -uroot -ppwd123 -BNe "select host,count(host) from processlist group by host;"information_schema#显示mysql的uptimemysql -uroot -ppwd123 -e "show global status like '%uptime%'"|awk '/ptime/{ calc = $NF / 3600;print $(NF-1), calc"Hour" }'#查看数据库的大小mysql -uroot -ppwd123 -e "select table_schema,round(sum(data_length+index_length)/1024/1024,4) from information_schema.tables group by table_schema;"
ok当然也标明了哪一行是什么样的意思,运行脚本执行结果如下:

在以上图中出现一条mysql: [Warning] Using a password on the command line interface can be insecure.这句话告诉我们,[警告]在命令行界面使用密码可能是不安全的。

2、在安装完全新的mysql数据库后查看库,会发现它默认有4个库



information_schema:数据字典,这个数据库存放了其他所以数据库的信息也就是(元数据)。元数据是关于数据库的数据,如database name 或 table name,列的数据类型,或访问权限等。

performance_schema:性能字典,此数据库为数据库性能优化提供很重要的参考信息

sys:mysql5.7提供了sys系统数据库。sys数据库里面包含了一系列的存储过程,自定义函数以及试图来帮助我们快速的了解系统的元数据信息,sys系统数据库结合了information_schema&&performance_schema的相关数据,让我们更加容易的检索元数据。

本次内容就到这里,有什么问题欢迎吐槽。 希望对您有所帮助,再见 奋斗


原创粉丝点击