广告
返回顶部
首页 > 资讯 > 数据库 >MySQL逻辑分层介绍
  • 405
分享到

MySQL逻辑分层介绍

MySQL逻辑分层介绍 2021-01-31 10:01:47 405人浏览 绘本
摘要

上一篇文章主要介绍了Mysql在ubuntu18.04系统上的安装,以及安装过程中可能会遇到的一些问题的解决方案。 在这篇文章里,开始介绍mysql数据库的逻辑分层。通过本文的介绍,可以大致了解到Mysql的语句从客户端发出请求后

MySQL逻辑分层介绍

上一篇文章主要介绍了Mysqlubuntu18.04系统上的安装,以及安装过程中可能会遇到的一些问题的解决方案。
在这篇文章里,开始介绍mysql数据库的逻辑分层。通过本文的介绍,可以大致了解到Mysql的语句从客户端发出请求后,在服务器经历了怎样的过程。有助于后面MySQL优化的加深理解。

MySQL逻辑分层

一般来说,MySQL逻辑可分为四个层次,分别为:连接层,服务层,引擎层,存储层

连接层

提供与客户端连接的服务。
当客户端发出一个请求后(如增删改查的SQL语句),首先到达该层,将服务器与客户端建立连接。

服务层

服务层分两个作用:

  • 提供各种用户使用的接口。selectinsert
  • 提供SQL优化器(MySQL Query Optimizer)。 SQL优化器是MySQL服务层自带的一个服务,它会自动优化用户写得不是最优的SQL,使其达到优化的效果。但由于优化器毕竟只是优化器,有时候会将用户自定义的优化方案给更改掉,从而使用户自己的优化方案失效,这一点需要注意。

引擎层

引擎层提供各种数据存储的方式。MySQL的存储引擎有很多,比较常用的比如有InnoDB, MyISAM

InnoDB与MyISAM的区别为:

  • InnoDB 事务优先,所以适合高并发操作,使用的是行
  • MyISAM 性能优先,适合查询多的场景,使用的是表锁

查询数据库支持哪些引擎的SQL:

mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| ARCHive            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec)

从上面结果可知,MySQL5.7默认的引擎是InnoDB(DEFAULT),除了FEDERATED之外的引擎都支持。

查看当前数据库使用的引擎:

mysql> show variables like "%storage_engine%";
+----------------------------------+--------+
| Variable_name                    | Value  |
+----------------------------------+--------+
| default_storage_engine           | InnoDB |
| default_tmp_storage_engine       | InnoDB |
| disabled_storage_engines         |        |
| internal_tmp_disk_storage_engine | InnoDB |
+----------------------------------+--------+
4 rows in set (0.00 sec)

指定数据库对象的引擎:
一般是指定某一张表使用哪个引擎,因为MySQL的表都要依赖于database,所以在此之前,先创建一个database,如:

mysql> create database testDB;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| testDB             |
+--------------------+
5 rows in set (0.00 sec)

如上,就创建成功了一个名为testDB的数据库,接下来该系列文章的所有演示,都在testDB中进行。
下面,就在testDB中创建一张名为tbl_A的表,表中有三个字段,分别为id(int 型,自增,主键),name(varchar型,长度为20),descript(varchar型,长度为80)。指定存储引擎为MyISAM

mysql> use testDB;
Database changed
mysql> create table tbl_A(
    -> id int(4) auto_increment,
    -> name varchar(20),
    -> descript varchar(80),
    -> primary key(id)
    -> )ENGINE=MyISAM;
Query OK, 0 rows affected (0.04 sec)

如上所示,MyISAM引擎的表就建成了。

存储层

最终的数据存储在存储层。

配置在终端直接操作MySQL

我们每次操作数据库,都要完成以下步骤,先使用mysql -uroot -p登录到客户端,然后指定数据库,然后才能在数据库里对表进行操作,显得比较繁琐,因此,可以定义一个别名,完成以上操作,在之后的操作中,直接使用该别名在终端操作即可,不需要每次都进入MySQL客户端。
如:我们将该别名定义为isql_s,在该命令后直接跟上SQL语句即可操作。配置方法如下:
先使用vim编辑器打开~/.bashrc,然后在最下面加上如下一句话:

alias isql_s="mysql -uroot -pcyc2010 -P3306 -DtestDB --auto-rehash -A -e"

以上命令的意思是,定义一个叫isql_s的别名,代替mysql -uroot -pcyc2010 -P3306 -DtestDB --auto-rehash -A -e命令。

  • 该命令指定mysql用户为root
  • -p后面跟的是root用户密码;
  • -P后面是端口号,如果是本地的话,默认为3306;(注意大小写,和密码的区别)
  • -D后面是database的名字,我这里指定的是testDB
  • --auto-rehash是自动补全,这个加不加无所谓;
  • -A代表不预读数据库信息,因为当数据库中表特别多时,预读数据库信息会使得打开数据库特别慢,有了这个参数,就可以提高打开效率。
  • -e代表后面可以直接跟SQL语句。
    见如下图120行所示:

配置完成后,按:wq!命令退出编辑器,然后使用如下命令,使配置参数生效:

$ . ~/.bashrc

接下来,就可以演示一下,如何使用isql_s命令直接访问数据库了。比如我要查本文建的表tbl_A的表结构:

chenyc@DESKTOP-Q5J25HR:~$ isql_s "desc tbl_A"
mysql: [Warning] Using a passWord on the command line interface can be insecure.
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| id       | int(4)      | NO   | PRI | NULL    | auto_increment |
| name     | varchar(20) | YES  |     | NULL    |                |
| descript | varchar(80) | YES  |     | NULL    |                |
+----------+-------------+------+-----+---------+----------------+

可以看到,直接就能查询出来,而不需要重新进入数据库,指定database等一系列繁琐的操作。
使用以上命令时,可以看到一句Warning,该警告信息是说在命令行直接输入密码是不安全的,这个并不影响查询结果,可以不用管它。

您可能感兴趣的文档:

--结束END--

本文标题: MySQL逻辑分层介绍

本文链接: https://www.lsjlt.com/news/5234.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL逻辑分层介绍
    上一篇文章主要介绍了MySQL在Ubuntu18.04系统上的安装,以及安装过程中可能会遇到的一些问题的解决方案。 在这篇文章里,开始介绍MySQL数据库的逻辑分层。通过本文的介绍,可以大致了解到MySQL的语句从客户端发出请求后...
    99+
    2021-01-31
    MySQL逻辑分层介绍
  • MySQL数据库逻辑备份工具mysqldump介绍
    下文给大家带来有关MySQL数据库逻辑备份工具mysqldump介绍内容,相信大家一定看过类似的文章。我们给大家带来的有何不同呢?一起来看看正文部分吧,相信看完MySQL数据库逻辑备份工具mysqldump...
    99+
    2022-10-18
  • linux shell 逻辑运算符、逻辑表达式详细介绍
    一、逻辑运算符 逻辑卷标 表示意思 1. 关于档案与目录的侦测逻辑卷标! -f 常用!侦测『档案』是否存在 eg: if [ -f filename ] -d 常用!侦测『目录』是否...
    99+
    2022-06-04
    逻辑 详细介绍 表达式
  • mysql逻辑架构有哪几层
    本篇内容介绍了“mysql逻辑架构有哪几层”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 第一层,服务层...
    99+
    2022-10-19
  • SQL Server中的逻辑函数介绍
    IIF: 根据布尔表达式计算为 true 还是 false,返回其中一个值。 IIF 是一种用于编写 CASE 表达式的快速方法。 它将传递的布尔表达式计算为第一个参数,然后根据计算...
    99+
    2022-11-13
  • MySQL三层逻辑架构是什么
    小编给大家分享一下MySQL三层逻辑架构是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!MySQL三层逻辑架构MySQL的存储引擎架构将查询处理与数据的存储/...
    99+
    2023-06-27
  • MINA框架的视图层和逻辑层实例分析
    本篇内容主要讲解“MINA框架的视图层和逻辑层实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MINA框架的视图层和逻辑层实例分析”吧!1. 开篇导言    目标用户:...
    99+
    2023-06-26
  • MySQL高级学习笔记(三):Mysql逻辑架构介绍、mysql存储引擎详解
    Mysql逻辑架构介绍总体概览 和其它数据库相比,MySQL有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎的架构上,插件式的存储引擎架构将查询处理和其它的系统任务以及数据的...
    99+
    2022-10-18
  • MySQL InnoDB 存储引擎的底层逻辑架构
    目录正文内存架构1. 自适应哈希索引2. Buffer pool3. Change buffer4. Log Buffer磁盘架构1. 系统表空间2. 独立表空间3. 普通表空间4. Undo 表空间5. 临时表空间总结...
    99+
    2022-09-17
  • MySQL InnoDB 存储引擎的底层逻辑架构
    目录正文内存架构1. 自适应哈希索引2. Buffer pool3. Change buffer4. Log Buffer磁盘架构1. 系统表空间2. 独立表空间3. 普通表空间4....
    99+
    2022-11-13
  • SpringBoot业务逻辑异常的处理方法介绍
    目录局部异常全局异常在Spring Boot项目中除了设置错误页面,还可以通过注解实现错误处理。 局部异常 局部异常: 在控制器类中添加一个方法,结合@ExceptionHandle...
    99+
    2022-11-13
  • MySQL分区介绍
    不论创建何种类型的分区,如果表中存在主键或唯一索引时,分区列必须是唯一索引的一个组成部分 mysql> create table t1(     -> col1 i...
    99+
    2022-10-18
  • Mysql逻辑架构的示例分析
    小编给大家分享一下Mysql逻辑架构的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1. 整体架构图和其它数据库相比,M...
    99+
    2022-10-18
  • 详解MySQL执行原理、逻辑分层、更改数据库处理引擎
    用了那么长时间的MySQL,sql语句相信早已烂熟于心,于是,我就试着去了解它的执行原理,以下是我学习过程中的总结要点。 只要是B/S架构,都是会有客户端与服务端,mysql也不例外。 首先客户端发出一个请...
    99+
    2022-10-18
  • Oracle的体系结构和物理、逻辑存储结构介绍
    本篇内容主要讲解“Oracle的体系结构和物理、逻辑存储结构介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle的体系结构和物理、逻辑存储结构介绍”吧...
    99+
    2022-10-18
  • MySQL中逻辑查询的示例分析
    这篇文章主要介绍了MySQL中逻辑查询的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在MySQL中,查询是用于构建DELET...
    99+
    2022-10-18
  • MySQL逻辑体系架构的示例分析
    这篇文章主要为大家展示了“MySQL逻辑体系架构的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MySQL逻辑体系架构的示例分析”这篇文章吧。Mysql...
    99+
    2022-10-19
  • MySQL的分表和分区介绍
        在日常开发或维护中经常会遇到大表的情况,所谓的大表是指存储了百万级乃至千万级条记录的表。这样的表过于庞大,导致数据库在查询和插入的时候耗时太长,性能低下,如果...
    99+
    2022-10-18
  • 接入层Nginx架构及模块介绍分享
    课程目标:1)帮助大家对Nginx有一定的认识2)熟悉Nginx有哪些应用场景3)熟悉Nginx特点和架构模型以及相关流程4)熟悉Nginx定制化开发的几种模块分类课程大纲:Nginx简介及特点Nginx应用场景Nginx框架模型介绍Ngi...
    99+
    2023-06-05
  • Mysql 分区介绍(九) —— 分区管理
    一、分区操作 1. 将没有分区的表改为分区表 ALTER TABLE trb3 PARTITION BY KEY(id) PARTITIONS 2; 2. 删除分区 # 删除所有分区, 同时数据丢失 ALT...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作