为什么 MySQL 使用多线程,而 Oracle 和 PostgreSQL 使用多进程

为什么 MySQL 使用多线程,而 Oracle 和 PostgreSQL 使用多进程,第1张

首先要明白县城和进程的区别和关系

一个进程至少拥有一个线程,一个线程只属于一个进程。

进程是拥有资源和调度的基本单位,线程是调度的基本单位。

进程独立拥有内存,线程共享所属进程的内存。

ORACLE在windows上也是多线程

传统的unix系统,早期没有提供多线程,只有多进程。linux是最近的版本才加入多线程支持,以前一直都是多进程。windows很早就支持多线程,本地应用大部分也是多线程。因此oracle在windows上一直都是多线程,在unix上才是多进程。多进程的好处是,一个进程崩溃不会影响其他进程,多线程的好处是不需要共享内存这样的手段来访问数据库缓冲区。mysql很可能是从windows发站起来的,pg和oracle都是最早从unix发站起来的,因此前者是多线程,后两者是多进程。

最根本的原因就如方圆说的,主要是当年 *** 作系统对线程支持不给力,而MySQL是特例,因为开发者喜欢挑战(不过事实上,那个时候的线程支持已经基本完善了。MySQL后于Oracle和POSTGRES)

希望能帮到您!

1。通过线程的互斥来同步 *** 作数据库

2。数据库采用事务处理表中的数据

3。采用共享方式打开数据库,不是以独占方式打开数据库

建立一个mysql连接表加上一个临界区,表结点是这样的(mysqlcon,bool),根据实际情况定大小。我用的是10个连接。

当要进行mysql *** 作时,就从表中取出一个闲置的mysql连接,并把bool量改为true,使用完后改成false,临界区的做用是保障一个mysql连接一次只能被一个线程使用。

通俗点说,线程与进程都是为了更充足地利用CPU资源。要把程序更有序更高效地让CPU执行,就需要先把程序分块处理,而 *** 作系统可以把程序视为进程进行调度,有多少程序在运行就有多少进程。但有些程序可能会占用很大块CPU资源,如果不再把进程再细分无法更高效利用CPU资源,就把进程分成多个线程。如何分线程是程序自己的事。

mysql是多线程架构,一个查询或者一个过程可以按其运算属性再分开多个线程进行运算,这个线程多少由配置决定,大多数我们不必理mysql线程数,除了需要对mysql深度优化。mysql一个实例就是一个进程,一般情况下mysql进程就一个,而也可以同时启动多个MYSQL实例,这时就会有多个MYSQL进程。

在实际应用下,使用多个MYSQL实例并不多见,如果担心WEB服务与MYSQL进程互相争夺资源会影响数据处理的效率,可以把MYSQL分到独立的服务器。


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

原文地址: https://outofmemory.cn/zaji/5941213.html

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

发表评论

登录后才能评论

评论列表(0条)

保存