数据库实例和数据库关系

相关与数据库,有连接、实例、会话、数据库、线程等概念,他们之间的关系今天看到篇文章和我理解的很像。可以参考。是以MySql为例的。

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次,第二次转账失败,并不影响你第一次转账成功。

注:一个会话中可以由多个事务。线程是操作系统概念。
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据库连接(Database Connection)和数据库实例(Database Instance)是数据库系统中两个不同的概念,它们之间有以下关系: 1. 数据库连接: - 数据库连接是应用程序与数据库之间建立的通信渠道,用于在应用程序和数据库之间传递数据和执行操作。 - 一个数据库连接表示应用程序与数据库之间的一次会话,它包含了连接所需的连接信息(如数据库地址、用户名、密码等)。 - 应用程序可以通过数据库连接向数据库发送SQL语句、获取查询结果,或执行数据库操作(如插入、更新、删除等)。 2. 数据库实例: - 数据库实例是在物理上运行的数据库软件。它是数据库系统的一个具体实例,由内存结构和后台进程组成。 - 当数据库软件启动时,会创建一个数据库实例。每个数据库实例都有自己的内存结构和后台进程,用于管理和处理数据库的运行。 - 数据库实例负责处理用户的请求,执行SQL语句,管理缓存、日志和数据文件等。 3. 关系: - 一个数据库实例可以同时支持多个数据库连接。多个应用程序可以通过不同的连接同时访问同一个数据库实例。 - 每个数据库连接都是独立的会话,它们在逻辑上是相互隔离的,每个连接可以有自己的事务和会话状态。 - 数据库连接通过与数据库实例建立通信,将应用程序的请求传递给数据库实例进行处理,并将处理结果返回给应用程序。 需要注意的是,数据库连接和数据库实例是两个不同的概念,它们是数据库系统中不同层次的抽象。数据库实例是物理上运行的数据库软件,而数据库连接是应用程序与数据库之间的通信通道。一个数据库实例可以支持多个数据库连接,每个连接表示一个独立的会话。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值