MySQL数据库访问性能优化

MYSQL应该是最流行的WEB后端数据库。大量应用于PHP,Ruby,Python,Java 等Web语言开发项目中,无论NOSQL发展多么快,都不影响大部分架构师选择MYSQL作为数据存储。MYSQL如此方便和稳定,以至于我们在开发 WEB 程序的时候非常少想到它。即使想到优化也是程序级别的,比方

关系数据库SQL性能优化的艺术

1 前言数据库性能优化,特别是SQL性能优化是程序员的一项基本功。对于常见应用系统,一般最容易出现问题的地方也多在数据库环节。消灭慢SQL,给数据库减负,保证大促期间系统平稳,是我们日常需要做好的任务之一。由于篇幅有限,在这里对关系数据库中SQL性能优化做一些简单的介绍,文中所用术语主要以Mysql

mysql运行原理笔记-B+树索引

B+数索引各个数据页可以组成一个双向链表,而每个数据页中的记录会按照主键值从小到大的顺序组成一个单向链表。每个数据页都会为存储在它里面的记录生成一个页目录,在通过主键查找某条记录的时候可以在页目录中使用二分法快速定位到对应的槽,然后再遍历该槽对应分组中的记录即可快速定位找到指定的记录。其中,页a、页

Redis的缓存穿透、缓存雪崩、缓存击穿问题的概念与解决办法

缓存穿透什么是缓存穿透?缓存穿透是指查询一个在缓存和数据库中一定不存在的数据,按照传统使用缓存流程:由于缓存不命中,接着查询数据库,但是数据库也无法查询出结果,因此也不会将空值写入到缓存中,这将会导致每个这样的查询都会去请求数据库,造成缓存穿透。如果有恶意用户,就可以利用这个漏洞,模拟请求很多缓存和

AQS(AbstractQueuedSynchronizer)源码深度解析(4)—共享式获取锁、释放锁的原理

acquireShared共享式获取锁共享式获取与独占式获取的区别就是同一时刻是否可以多个线程同时获取到锁。在独占锁的实现中会使用一个exclusiveOwnerThread属性,用来记录当前持有锁的线程。当独占锁已经被某个线程持有时,其他线程只能等待它被释放后,才能去争锁,并且同一时刻只有一个线程