select查询流程是怎么样的

  • mysql select查询的数据是查询内存里面,如果没有查询的数据没有在内存,就需要mysql的innodb引擎读取磁盘,将数据加载的内存后在读取。这就体现了,mysql查询大量数据或冷数据性能比较慢的原因。

  • select查询会加DML读锁,读锁是不互斥的。所以多个查询都可以读某条数据。

  • select查询大数据时候,是边查询边返回给客户端。每次返回的大小为net_buffer_length参数控制,默认为16K。所以有时候大查询慢,客户端接受数据慢也可能是影响的原因。

  • mysql也支持对select结果缓存,建议不要开启查询缓存(query_cache_type),因为mysql数据每一次变更,查询缓存都会失效,生产实时业务数据库,是多么频繁的变更呀,所以select查询缓存没必要开启

  • mysql内存配置参数(InnoDB Buffer Pool):innodb_buffer_pool_size。

  • 查询流程入下图:
    mysql的select查询流程_读锁