mysql个人见解

mysql基本原理(仅个人理解)

mysql属于c/s架构,即客户端和服务端交互

1.连接:例PHP mysqli_connect 以客户端发起请求,mysql服务端进行接收并处理,其中客户端每发起的一次链接mysql均起一个线程来维持一个socket(套接字),此时会有服务端资源的开销,因此mysql一般需设置一个合适的最大链接数,单机情况下,需考虑链接被打满情况,链接又可分为长链接和短链接,其中链接可通过客户端close主动关闭和释放,否则由mysql服务端根据设置的最大超时时间进行关闭

2:查询(innodb):客户端发起查询sql,mysql服务端根据对应套接字得到该链接的sql,进行sql语句的优化处理,然后根据对应的搜索条件和索引去磁盘搜索数据(注意此处不区分select *或指定字段),然后mysql服务得到磁盘的数据后,根据select 的字段进行筛选处理,将数据返回给指定客户端(select 指定字段名主要目的是减少mysql服务端到客户端的传输数据,对于mysql服务端去磁盘扫数据不管select多少字段,都要扫一样多的数据出来)

3:并发插入修改数据时触发的排他锁:mysql其实是以一个类似队列的机制来处理sql语句,并且在mysql服务端有一个缓冲区,当并发大的时候

猜你喜欢

转载自blog.csdn.net/weixin_39177464/article/details/106678372