热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mysql引擎总结_Mysql架构组成之存储引擎总结

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

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;"

1de9299708fda4eaa7460ed72509eeb9.png

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

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

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

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

4681b0e481c9921ea78f6ce2f4635697.png

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

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

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

454fcb2e2025fee7afad7e3c0f602114.png

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

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

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

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

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

27501a1e1aa5a74dc745d800702f21b3.png

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

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

14516fd53e0dd6f6cd34cbb18d030c56.png

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

5、mysqladmin参数

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

#mysqladmin -uroot –pxxx -h localhost ping

2f21da5227af5b0598ca39e47d2f8f47.png

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

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

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

#mysqladmin -uroot -ppwd123 -h localhost status

649140b9dcf70d8c8ef8f69929fe18d9.png

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

以上就是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的uptime

mysql -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当然也标明了哪一行是什么样的意思,运行脚本执行结果如下:

b51ceb682e5e99bab67d23e157906e1b.png

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

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

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

29006ae90cdc15f7f0277cf0638a2d54.png

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

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

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

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



推荐阅读
  • OpenMap教程4 – 图层概述
    本文介绍了OpenMap教程4中关于地图图层的内容,包括将ShapeLayer添加到MapBean中的方法,OpenMap支持的图层类型以及使用BufferedLayer创建图像的MapBean。此外,还介绍了Layer背景标志的作用和OMGraphicHandlerLayer的基础层类。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • 解决.net项目中未注册“microsoft.ACE.oledb.12.0”提供程序的方法
    在开发.net项目中,通过microsoft.ACE.oledb读取excel文件信息时,报错“未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序”。本文提供了解决这个问题的方法,包括错误描述和代码示例。通过注册提供程序和修改连接字符串,可以成功读取excel文件信息。 ... [详细]
  • 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件
    本文旨在全面介绍Windows内存管理机制及C++内存分配实例中的内存映射文件。通过对内存映射文件的使用场合和与虚拟内存的区别进行解析,帮助读者更好地理解操作系统的内存管理机制。同时,本文还提供了相关章节的链接,方便读者深入学习Windows内存管理及C++内存分配实例的其他内容。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
author-avatar
lily0407520
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有