Mysql——你真的理解Mysql为什么慢吗?
·
当代计算机的读写磁盘过程是这样的:CPU告诉磁盘从内存某个位置读取某些数据到磁盘中的某个文件中,然后CPU就可以去做其他事情而不是傻傻等待,等到读写完成之后,磁盘会通过中断来提醒CPU任务的结束。这就是DMA。也就是说,整个过程中CPU不做什么,其实没有浪费多少时间。
事实上,Mysql的慢是由于Mysql必须保持一致性。如果说用户执行了一条插入语句,当你还没有把这个语句真正落在磁盘上的时候就直接告诉用户:你的数据插入成功。然后电脑突然关机,用户再次打开电脑发现已经插入成功的数据消失了。这就产生了数据不一致问题,用户所见非其所得,乱子就大了。
所以说,即使有DMA这种提高CPU利用率的东西,Mysql也不能使用,或者说可以使用但最起码数据落盘之前要把Mysql客户端阻塞住不能给用户返回结果,不能让用户执行其他命令(在用户看来也就相当于耗时很长的阻塞了)。后者可以利用DMA提高CPU利用率,尽管不会提高用户体验。
这也就是为什么Mysql慢,他只是“不得不”慢。除此之外,CPU与硬件交互也确实比与内存交互慢多了,尽管只交互一下。
更多推荐



所有评论(0)