MySQL中的实例、数据库关系简介

1、MySQL是单进程多线程(而Oracle等是多进程),也就是说MySQL实例在系 统上表现就是一个服务进程,即进程(通过多种方法可以创建多实例,再安装一个端口号不同的mysql,或者通过workbench来新建一个端口号不同的 服务器实例等),该架构类似于SQL Server和Windows版本的Oracle;
2、MySQL实例是线程和内存组成,实例才是真正用于操作数据库文件的(MySQL数据库是由一些列物理文件组成,类似于frm、MYD、MYI、ibd结尾的文件);
3、一般情况下一个实例操作一个或多个数据库(Oracle一个实例对应一个数据库);集群情况下多个实例操作一个或多个数据库。

注:在实例启动的时候MySQL会读取配置文件,类似于Oracle的spfile文件,不同的是Oracle如果找不到参数文件会启动失
        败,MySQL如果找不到配置文件则会按照默认参数设置启动实例。
—————————————————————————————————————————————————————————————————————————————
mysql中database、instance、session:

mysql中建立一个会话,不是和具体的数据库相连接,而是跟某个instance建立会话(每个会话可以使用不同的用户身份)。

而一个实例可以操作多个数据库,故一个会话(在操作系统概念里,会话即是线程)可以操作一个实例上的多个数据库。

简单描述如下:instance >> database

—————————————————————————————————————————————————————————————————————————————

connection和session的定义和区别:

1.连接(connection)是一个物理的概念,它指的是一个通过网络建立的客户端和专有服务器(Dedicated Server)或调度器(Shared Server)的一个网络连接。
2.会话(session)是一个逻辑的概念,它是存在于实例中。

注:创建一个连接(connection)实际上是在某个实例(instance,或者说是进程)中创建一个或多个线程。

两者关系:

  • 1、一个连接可以拥有多个会话也可以没有会话(实际上,一条连接上的各个会话可以使用不同的用户身份),同一个连接上的不同会话之间不会相互影响。
  • 2、 两个会话之间的影响,体现在锁和锁存,即对相同资源的操作(对象定义或数据块)或请求(CPU/内存),它们的处理一般是按队列来处理的,前面的没有处理 好,后面的就要等待。如果以打电话来比喻:connect就好比你接通对方,这时,connect就建立了,有没有通话,不管。双方进行通话,则 session建立了,如果换人,则新的session建立,原session结束,类似的,可以在同一个connect上进行多个会话。最后,挂 机,connect结束。

—————————————————————————————————————————————————————————
1、会话可以创建多个事务
比如:使用客端连接数据库,这样你就可以执行很多个事务了

2、一个事务只能由一个会话产生
在数据库里的事务,如果在执行的SQL都是由会话发起的,哪怕是自动执行的JOB也是由系统会话发起的

3、一个事务可能会产生一个或多个线程
比如RMAN备份,是可以创建多个线程可加快备份速度

4、一个线程在同一时间内只能执行一个事务
而一个线程,在没结束当前事务是无法释放资源来执行第二个事务
—————————————————————————————————————————————————————————
事务、会话与线程的关系和区别:
事务:简单理解局势一个业务需求的最小处理单位。
            如:从A银行卡转账500元到B银行卡,事务就包括两部分,1、从A卡减掉500元 2、从B卡加上500元
            这两个部分只要一个部分出错,就要整体“回滚”,那这就是一个事务

会话:可以包含N个事务
            如:你登陆网银之后,可以重复转账步骤2次,第二次转账失败,并不影响你第一次转账成功。

注:一个会话中可以由多个事务。线程是操作系统概念。

MySQL中的连接、实例、会话、数据库、线程之间的关系的更多相关文章

  1. DB数据源之SpringBoot+MyBatis踏坑过程(六)mysql中查看连接,配置连接数量

    DB数据源之SpringBoot+MyBatis踏坑过程(六)mysql中查看连接,配置连接数量 liuyuhang原创,未经允许禁止转载 系列目录连接 DB数据源之SpringBoot+Mybati ...

  2. MySQL中内存分为全局内存和线程内存

    首先我们来看一个公式,MySQL中内存分为全局内存和线程内存两大部分(其实并不全部,只是影响比较大的 部分): 复制代码 代码如下: per_thread_buffers=(read_buffer_s ...

  3. (转)C#/.NET主线程与子线程之间的关系

    一般 一个应用程序就对应一个进程,一个进程可有一个或多个线程,而一般有一个主线程.       有的博客上说“至少一个主线程”,这一说法持有怀疑         主线程与子线程之间的关系        ...

  4. C#/.NET主线程与子线程之间的关系

    以前一直没有在程序中写过总结,再翻开程序时却不知所云,所以我决定写总结        一般 一个应用程序就对应一个进程,一个进程可有一个或多个线程,而一般有一个主线程.       有的博客上说“至少 ...

  5. 【Linux网络编程】TCP网络编程中connect()、listen()和accept()三者之间的关系

    [Linux网络编程]TCP网络编程中connect().listen()和accept()三者之间的关系 基于 TCP 的网络编程开发分为服务器端和客户端两部分,常见的核心步骤和流程如下: conn ...

  6. AE中网络分析的实现 的各个类之间的关系

    原文AE中网络分析的实现 的各个类之间的关系 1.     创建网络数据集 在ArcCatalog中勾选网络分析模块,新建个人地理信息数据库—>新建要素数据集—>批量导入要素—>创建 ...

  7. 关于CPU核心,线程,进程,并发,并行,及java线程之间的关系

    前言:作为一个转行java的小白,一直搞不清楚java中的多线程.于是来梳理一下关于CPU核心,线程,进程,并发,并行,及java线程之间的关系, 1.CPU角度来看: 我们以Intel的Core i ...

  8. C#5.0 异步编程 Async和Await--理解异步方法与线程之间的关系

    这次来理解一下异步方法与线程之间的关系 新建一个控制台程序 代码如下 static void Main(string[] args) { Console.WriteLine("\n进入Mai ...

  9. jeecms系统使用介绍——jeecms中的内容、栏目、模型之间的关系

    转载:https://blog.csdn.net/dongdong9223/article/details/76578120 jeecms是一款很不错的cms产品,之前在文章<基于Java的门户 ...

随机推荐

  1. C#中输入法全角转换半角

    一般情况下,我们都是使用英文半角的来进行编程,包括输入框和密码框的设定一般也是英文半角,但往往有些人使用全角输入,登陆不进去还以为你系统错误,现整理了几种全角切换半角和设定输入法的几种方法. 方法一: ...

  2. MySQL的sql语言分类DML、DQL、DDL、DCL

    SQL语言一共分为4大类:数据定义语言DDL,数据操纵语言DML,数据查询语言DQL,数据控制语言DCL 1.数据定义语言DDL(Data Definition Language) 对象: 数据库和表 ...

  3. python 手机App数据抓取实战二抖音用户的抓取

    前言 什么?你问我国庆七天假期干了什么?说出来你可能不信,我爬取了cxk坤坤的抖音粉丝数据,我也不知道我为什么这么无聊. 本文主要记录如何使用appium自动化工具实现抖音App模拟滑动,然后分析数据 ...

  4. py kafka

    # https://github.com/confluentinc/confluent-kafka-python/blob/master/examples/consumer.py #生产者 impor ...

  5. java 获取json字符串中key对应的值

    用到了Gson的JsonParser maven项目引入 <dependency> <groupId>com.google.code.gson</groupId> ...

  6. (十二)Activitivi5之流程控制网关:排他

    一.概念 所谓排他网关 顾名思义 执行到该网关,根据条件只能走一条执行线 二.案例 当流程走到“学生请假”任务节点的时候, /** * 完成任务 */ @Test public void test_c ...

  7. SQL 不同服务器数据库操作

    https://www.cnblogs.com/lusunqing/p/3660190.html --创建远程链接服务器 execute sys.sp_addlinkedserver @server= ...

  8. dll安装到GAC以及引用的方法【转】

    一 首先    程序集(dll) 安装到 GAC 中的方法 所谓的GAC,就是全局程序集缓存(Global Assembly Cache). 针对一些类库项目或用户控件项目在程序开发完成后,有时需要将 ...

  9. cordova 和 java ( JDK ) 和 android-studio (SDK)的初始安装和配置

    一:前言(2018) 之前封装APP都是用的HBuilder结合mui来封装的简单app,有空的时候想研究下之前的phonegap来封装app.然后遇到的问题还是蛮多的,毕竟之前没弄过. 下面的步骤主 ...

  10. 关于Vue中,在方法中使用(操作)子组件获取到的数据

    已知,子组件通过props获取父组件传过来的数据,而这个数据是无法在created.mounted生命周期中使用的,只能在beforeUpdated或者updated获取到: 但是如果我们要使用这个数 ...