21

MySQL的SQL解析器和存储引擎层

客户端通过以SQL语句的形式发送请求给服务器端从而从表中获取数据或对表数据进行修改。而服务端程序使用以下两层处理模型以执行每个语句请求:dbdao.com
上层包括SQL解析器(parser)和优化器(optimizer)。
下层包括了一组存储引擎。

继续阅读全文

11

通过协程实现mysql查询的异步化

对于一个web网站的性能来说,瓶颈多半是来自于数据库。一般数据库查询会在某个请求的整体耗时中占很大比例。如果能提高数据库查询的效率,网站的整体响应时间会有很大的下降。如果能实现mysql查询的异步化,就可以实现多条sql语句同时执行。这样就可以大大缩短mysql查询的耗时。

继续阅读全文

05

关于MySQL线程池资料整理–Percona Server

MySQL执行statement使用一个连接一个thread的方式,当连接数增加到某一个点,那么性能将会开始下降.
这个特性的作用就是无论有多少连接,thread pool都讲保证性能处于最好水平.
thread pool的原理主要是减少线程,减少上下文交换和锁资源争抢,针对OLTP环境特别有效.
为可以开启thread pool功能,请将thread_handling=pool-of-threads.
percona server实现的thread pool是在server级别,和oracle mysql的不一样(插件形式),另外一个不同点在于,percona的thread pool不尝试最小化并发事物数量.

继续阅读全文

十二 01

MySQL 加锁处理分析

MySQL/InnoDB的加锁分析,一直是一个比较困难的话题。我在工作过程中,经常会有同事咨询这方面的问题。同时,微博上也经常会收到MySQL锁相关的私信,让我帮助解决一些死锁的问题。本文,准备就MySQL/InnoDB的加锁问题,展开较为深入的分析与讨论,主要是介绍一种思路,运用此思路,拿到任何一条SQL语句,都能完整的分析出这条语句会加什么锁?会有什么样的使用风险?甚至是分析线上的一个死锁场景,了解死锁产生的原因。

继续阅读全文