一:索引的目的 - 索引的出现其实就是为了提高数据查询的效率,就像书的目录一样。 二:InnoDB 索引模型 - InnoDB 采用 B+树 的数据结构进行存储。 - 例如,我们建立一张表,分析他的数据建立 mysql> create table T( id int primary key, k i Read More
一:事务概念 - <!--?xml version="1.0" encoding="UTF-8"?--> ACID(Atomicity、Consistency、Isolation、Durability,即原子性、一致性、隔离性、持久性) 二:事务产生的问题 - 多个事务同时执行的时候 - 脏读(di Read More
一:更新流程 - 对于更新来说,也同样会根据 SQL 的执行流程进行。 - - 连接器 - 连接数据库,具体的不做赘述。 - 查询缓存 - 在一个表上有更新的时候,跟这个表有关的查询缓存会失效。 - 这也就是我们一般不建议使用查询缓存的原因。 - 分析器 - 接下来,分析器会通过词法和语法解析知道这 Read More
一:概述 首先需要对 MySQL 整体的基础架构 有个大体的认识 二:MySQL 的分层 MySQL 在大体上可以分为 Server 层和存储引擎层两部分 Server 层 - Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能。 - 以及所有的内 Read More
一:在查询语句时,应该注意的优化问题 - SELECT语句务必指明字段名称 - SELECT * 会增加很多不必要的消耗(CPU、IO、内存、网络带宽) - 同时会让 Mysql 优化器无法优化 - 在确定数据集大小的情况下,使用 limit 指明 数据数量 - Mysql 是在先返回结果集之后再进 Read More
一:参考 - 十大经典排序算法动画与解析,看我就够了!(配代码完全版) - 这个动画很形象了,自己也对排序算法重新总结了下(PHP版本) - Github Sort 二:算法详解 <?php /** * https://www.cnblogs.com/fivestudy/p/10212306.htm Read More
一:什么是缓存穿透? - 定义 - 正常情况下,我们在理想的条件下去查询缓存数据都是存在的。 - 那么请求去查询一条数据库中不存在的数据,也就是缓存和数据库都查询不到这条数据。 - 所以请求每次都会打到数据库上面去,这种查询不存在数据的现象我们称为缓存穿透。 - 问题 - 在大量的恶意请求会直接打到 Read More
一:Redis 概述 - Redis 是内存级别的数据库,在一台普通电脑上,Redis 3.X 便可以读取 10 万个键值对(现在的Redis官方版本已经更新到了5.X,性能会更好)。 二:关于Redis 和 Memcached 的性能问题。 - 理论上 Memcached 为多线程模型,会比 Re Read More
一:什么是锁? - 锁是计算机协调多个进程或纯线程并发访问某一资源的机制。 - 通俗的来说,锁是一种对资源的保护形式。 二:锁分类 - 表级锁 - 开销小,加锁快,没有死锁,锁定粒度大,发生锁冲突的概率最大,并发度最低 - 行级锁 - 提到了行锁,也就提到了并发控制。Innodb - 开销大,加锁慢 Read More
一:引言 - 今天,我们搞了一个聚会,邀请整个家庭的人来参加,有A,B,C......等十几个人 - 这时候,突然A的儿子来了,说我想知道A是否来参加了聚会。 - 于是我们拿出了参会人员的名单册(哈希表等内存方法),根据这个表,我们马上找出了A来参加了这个聚会,完美的解决的这个问题。 - 之后过来一 Read More