Java使用完数据库之后用不用每次都关闭连接

Java使用完数据库之后用不用每次都关闭连接,第1张

一般情况下使用完都会关的

但是例如连接池这种,就是大家直接使用即可,当web服务器结束时自动由框架帮你关闭。

我感觉关闭不关闭的原则是:如果可以很好的控制连接数量和最后的连接关闭,可以不用每次都关闭。

每次请求创建和关闭数据库连接,会影响web api的性能,因为每次请求都会耗费时间去创建和关闭数据库连接,这将增加响应时间。另外,如果web api处理大量请求,每次都创建和关闭数据库连接,将会消耗大量的资源,也将对性能产生负面影响。因此,建议使用连接池,每次请求从连接池中获取数据库连接,然后在完成 *** 作后归还连接池,而不是每次都创建和关闭数据库连接。

如果你用了自己维护的连接池,程序使用完毕后可以不关,由连接池的管理程序来处理

如果你直接连接到数据库,看你的Connection对象的作用域,如果是一个全局的,在客户端不多的情况下,不关闭也没什么大问题,如果在函数里,应该关掉。

不关闭的后果就是无法再连接到数据库了。用句俗语讲,有借有还,再借不难。

mysqli::autocommit -- mysqli_autocommit — 打开或关闭本次数据库连接的自动命令提交事务模式

说明

面向对象风格

mysqli::autocommit ( bool $mode ) : bool

过程化风格

mysqli_autocommit ( mysqli $link , bool $mode ) : bool

打开或关闭本次数据库连接的自动命令提交事务模式。

如需要确认当前连接的自动事务提交状态,可执行这个SQL请求SELECT @@autocommit

参数

link

仅以过程化样式:由mysqli_connect() 或 mysqli_init() 返回的链接标识。

mode

Whether to turn on auto-commit or not

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE。

注释

Note:

这个方法不会在不支持事务处理的表单查询中生效,如MyISAM或 ISAM。

关闭数据库的函数进程需要根据具体情况进行 *** 作,以下是一些常见的方法:

1 使用命令行工具:在Windows系统中,可以使用任务管理器或者命令行工具(如taskkill)来结束进程。在Linux系统中,可以使用kill命令或者pkill命令来结束进程。

2 关闭数据库连接:如果是通过程序连接到数据库并执行函数,则可以尝试关闭与数据库的连接以终止相关进程。不同编程语言和框架提供了不同的方式来关闭数据库连接,例如Java中可以调用Connectionclose()方法。

3 重启服务器:如果无法找到特定进程或者其他方法无效,则可以考虑重启服务器以强制终止所有正在运行的进程。但这种做法会导致服务停机时间较长,并且可能造成数据丢失等问题,请谨慎使用。

需要注意的是,在关闭任何一个正在运行的函数时都应该先备份好相关数据以防止数据丢失。同时也要避免误删、误关等 *** 作对正常业务造成影响。

对于大多数Oracle DBA来说,启动和关闭Oracle数据库最常用的方式就是在命令行方式下的Server Manager。从Oracle 8i以后,系统将Server Manager的任何功能都集中到了SQLPlus中,也就是说从8i以后对于数据库的启动和关闭能够直接通过SQLPlus来完成,而不再另外需要Server Manager,但系统为了保持向下兼容,依旧保留了Server Manager工具。另外也可通过图像用户工具(GUI)的Oracle Enterprise Manager来完成系统的启动和关闭,图像用户界面Instance Manager很简单,这里不再详述。

要启动和关闭数据库,必须要以具备Oracle 管理员权限的用户登陆,通常也就是以具备SYSDBA权限的用户登陆。一般我们常用INTERNAL用户来启动和关闭数据库(INTERNAL用户实际上是SYS用户以SYSDBA连接的同义词)。Oracle数据库的新版本将逐步淘汰INTERNAL这个内部用户,所以我们最好还是配置DBA用户具备SYSDBA权限。

二、数据库的启动(STARTUP)

启动一个数据库需要三个步骤:

1、 创建一个Oracle实例(非安装阶段)

2、 由实例安装数据库(安装阶段)

3、 打开数据库(打开阶段)

在Startup命令中,能够通过不同的选项来控制数据库的不同启动步骤。

1、STARTUP NOMOUNT

NONOUNT选项仅仅创建一个Oracle实例。读取initora初始化参数文档、启动后台进程、初始化系统全局区(SGA)。Initora文档定义了实例的配置,包括内存结构的大小和启动后台进程的数量和类型等。实例名根据Oracle_SID配置,不一定要和打开的数据库名称相同。当实例打开后,系统将显示一个SGA内存结构和大小的列表,如下所示:

SQL> startup nomount

ORACLE 例程已启动。

Total System Global Area 35431692 bytes

Fixed Size 70924 bytes

Variable Size 18505728 bytes

Database Buffers 16777216 bytes

Redo Buffers 77824 bytes

2、STARTUP MOUNT

该命令创建实例并且安装数据库,但没有打开数据库。Oracle系统读取控制文档中关于数据文档和重作日志文档的内容,但并不打开该文档。这种打开方式常在数据库维护 *** 作中使用,如对数据文档的更名、改变重作日志连同打开归档方式等。在这种打开方式下,除了能够看到SGA系统列表以外,系统还会给出"数据库装载完毕"的提示。

3、STARTUP

该命令完成创建实例、安装实例和打开数据库的任何三个步骤。此时数据库使数据文档和重作日志文档在线,通常还会请求一个或是多个回滚段。这时系统除了能够看到前面Startup Mount方式下的任何提示外,还会给出一个"数据库已打开"的提示。此时,数据库系统处于正常工作状态,能够接受用户请求。

假如采用STARTUP NOMOUNT或是STARTUP MOUNT的数据库打开命令方式,必须采用ALTER DATABASE命令来执行打开数据库的 *** 作。例如,假如您以STARTUP NOMOUNT方式打开数据库,也就是说实例已创建,但是数据库没有安装和打开。这是必须运行下面的两条命令,数据库才能正确启动。

ALTER DATABASE MOUNT;

ALTER DATABASE OPEN;

而假如以STARTUP MOUNT方式启动数据库,只需要运行下面一条命令即能够打开数据库:

ALTER DATABASE OPEN

4、其他打开方式

除了前面介绍的三种数据库打开方式选项外,更有另外其他的一些选项。

(1) STARTUP RESTRICT

这种方式下,数据库将被成功打开,但仅仅允许一些特权用户(具备DBA角色的用户)才能够使用数据库。这种方式常用来对数据库进行维护,如数据的导入/导出 *** 作时不希望有其他用户连接到数据库 *** 作数据。

(2) STARTUP FORCE

该命令其实是强行关闭数据库(shutdown abort)和启动数据库(startup)两条命令的一个综合。该命令仅在关闭数据库碰到问题不能关闭数据库时采用。

(3) ALTER DATABASE OPEN READ ONLY;

该命令在创建实例连同安装数据库后,以只读方式打开数据库。对于那些仅仅提供查询功能的产品数据库能够采用这种方式打开。

三、数据库的关闭(SHUTDOWN)

对于数据库的关闭,有四种不同的关闭选项,下面对其进行一一介绍。

1、SHUTDOWN NORMAL

这是数据库关闭SHUTDOWN命令的确省选项。也就是说假如您发出SHUTDOWN这样的命令,也即是SHUTDOWN NORNAL的意思。

发出该命令后,任何新的连接都将再不允许连接到数据库。在数据库关闭之前,Oracle将等待现在连接的任何用户都从数据库中退出后才开始关闭数据库。采用这种方式关闭数据库,在下一次启动时无需进行任何的实例恢复。但需要注意一点的是,采用这种方式,也许关闭一个数据库需要几天时间,也许更长。

2、SHUTDOWN IMMEDIATE

这是我们常用的一种关闭数据库的方式,想很快地关闭数据库,但又想让数据库干净的关闭,常采用这种方式。

当前正在被Oracle处理的SQL语句立即中断,系统中任何没有提交的事务全部回滚。假如系统中存在一个很长的未提交的事务,采用这种方式关闭数据库也需要一段时间(该事务回滚时间)。系统不等待连接到数据库的任何用户退出系统,强行回滚当前任何的活动事务,然后断开任何的连接用户。

3、SHUTDOWN TRANSACTIONAL

该选项仅在Oracle 8i后才能够使用。该命令常用来计划关闭数据库,他使当前连接到系统且正在活动的事务执行完毕,运行该命令后,任何新的连接和事务都是不允许的。在任何活动的事务完成后,数据库将和SHUTDOWN IMMEDIATE同样的方式关闭数据库。

4、SHUTDOWN ABORT

这是关闭数据库的最后一招,也是在没有任何办法关闭数据库的情况下才不得不采用的方式,一般不要采用。假如下列情况出现时能够考虑采用这种方式关闭数据库。

1、 数据库处于一种非正常工作状态,不能用shutdown normal或shutdown immediate这样的命令关闭数据库;

2、 需要立即关闭数据库;

3、 在启动数据库实例时碰到问题;

任何正在运行的SQL语句都将立即中止。任何未提交的事务将不回滚。Oracle也不等待现在连接到数据库的用户退出系统。下一次启动数据库时需要实例恢复,因此,下一次启动可能比平时需要更多的时间。

以上就是关于Java使用完数据库之后用不用每次都关闭连接全部的内容,包括:Java使用完数据库之后用不用每次都关闭连接、c#中webapi每次请求创建关闭和连接数据库性能如何、VC++中ADO连接数据库时打开数据库链接后是否一定要关闭该链接等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/sjk/10195883.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存