Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 单处理器系统中的多线程程序_Mysql_Multithreading_Multiprocessing - Fatal编程技术网

Mysql 单处理器系统中的多线程程序

Mysql 单处理器系统中的多线程程序,mysql,multithreading,multiprocessing,Mysql,Multithreading,Multiprocessing,我有一个问题 假设我有一个单核处理器和一个单线程程序,同一个程序是多线程的 我是否可以安全地假设,在单处理器系统中,当线程持续执行某些工作而不等待或睡眠时,单线程程序的运行会比多线程程序好得多 同样对于多核处理器系统,它会改变吗?因为它是一个多线程程序,而不是多进程程序。来自同一进程的线程是否可以使用系统的多处理器,或者它们将在同一处理器中运行?如果它们在同一个处理器中运行,那么上述答案将满足这个问题 当我使用mysql时,我想到了这个问题。在mysql中,每个连接都有一个进程和多个线程,对吗?

我有一个问题

假设我有一个单核处理器和一个单线程程序,同一个程序是多线程的

我是否可以安全地假设,在单处理器系统中,当线程持续执行某些工作而不等待或睡眠时,单线程程序的运行会比多线程程序好得多

同样对于多核处理器系统,它会改变吗?因为它是一个多线程程序,而不是多进程程序。来自同一进程的线程是否可以使用系统的多处理器,或者它们将在同一处理器中运行?如果它们在同一个处理器中运行,那么上述答案将满足这个问题

当我使用mysql时,我想到了这个问题。在mysql中,每个连接都有一个进程和多个线程,对吗?
如果是这种情况,那么在单处理器系统中,如果我同时运行两个查询,那么它将比逐个运行两个查询花费更多的时间?

多个线程可以使用多个处理器

如果这加快了应用程序的速度:取决于应用程序。锁定多个处理器非常昂贵。因此,如果您需要线程之间的大量同步,那么这将成为一个瓶颈。如果每个线程都能自己工作,这肯定会加快应用程序的速度

同样在单处理器系统上:使用多个线程将降低总体速度(如果只执行工作),但通常会提高响应时间(因为此类系统的主要目标是在工作线程中执行工作,同时保持GUI响应)

对于MySql,我不是专家。基本上,如果您执行两个查询(只读访问!),那么它们应该会更快。如果您进行写访问,则可能需要同步查询(并且可能会运行得更慢)


此外,您需要确保DB本身对于所需的访问是多线程安全的(在速度和安全性之间总是有一个折衷…)。如果您需要大量的变异,有时使用单线程会更快…

在单处理器系统上,程序运行的基本自然方式是单线程。还请理解,随着DMA的出现,没有任何系统仍然是单处理器/内核,因为DMA与主程序“并行”工作(尽管内存仲裁器不断决定谁下一步执行某种锁定)

此外,消除程序中的多线程也消除了昂贵的上下文切换和锁定开销。因此,您是对的,单线程程序在单处理器系统上运行得更快

在多处理器/内核上,如果您的多线程/多处理器程序执行大量锁定,那么速度将大大降低。但请注意,硬件(即内存仲裁器)已经设置了锁定,因此速度增益不会像第一次出现时那样与处理器数量相乘