摘要:
前置概念 无并发的解决方案 一些小型项目,或极少有并发的项目,这些策略在无并发情况下,不会有什么问题。 读数据策略:有缓存则读缓存,然后接口返回。没有缓存,查询出数据,载入缓存,然后接口返回。 写数据策略:数据发生了变动,先删除缓存,再更新数据,等下次读取的时候载入缓存,或一步到位更新数据后直接更新 阅读全文
摘要:
近期看到了一个前阿里资深开发的学术分析视频: 高并发情况下,一个事务内有更新操作还有查询操作,那是先更新好,还是先无锁查询好? 仅70秒的视频,深感学问太深,但是海哥讲的有待补充,于是写下了这篇文章,作为补充。 鸣谢:前阿里资深开发极海Channel的技术分享。 先说答案 这是个开放性的问题,必须看 阅读全文
摘要:
本文说明的是MySQL锁,和操作系统或者编程语言的锁无关。 概念 作用:在并发情况下让数据正确的读写。 优点:并发情况下对数据读写可控,防止出错。 缺点:降低性能、增加难度。 分类 数据操作类型划分 读锁(共享锁、S锁) 写锁(排它锁、独占锁、X锁) 粒度划分 表级锁 S锁、X锁 意向锁 自增锁 元 阅读全文
摘要:
声明测试表,供文章案例使用 CREATE TABLE `cs` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `num` int(10) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=InnoD 阅读全文
摘要:
Slow Log 简介 用于记录执行时间超过指定值的 SQL 语句的详细信息,多用于调试和监控。 配置 因为开启会略微影响性能,所以默认没有开启,所以需要配置。 查看是否开启 show variables like '%slow%'; + + + | Variable_name | Value | 阅读全文
摘要:
注:以下所有内容均为自己总结的笔记,涉及底层原理,难度对标18K-25K薪资,偏理论,不保证百分百准确性。 索引查找快速的原理? 创建索引的本质是排序,排好序之后再找数据就快了。 对于B+tree索引,B+tree对数据排序后采用多路查找思想的非线性查找方案,减少了大量的查询次数,从而避免多次磁盘i 阅读全文
摘要:
索引相关 类型隐式转换 大坑 **字段filed1是varchar类型,且加了索引,如果 where filed1 = 123; type 可能是all,因为123是数字类型,mysql内部会用函数做隐式转换,用了函数,索引就失效了。** 大数据深度分页,用主键 select field1,fiel 阅读全文
摘要:
推荐:SQL语句执行顺序相关问题。 MySQL Server架构 分层概述 MySQL Server架构可抽象为3层。 连接层:验证用户名密码,认证成功后,获取当前账号的权限并缓存,并分配TCP连接池和线程池资源。 处理层:实现核心的处理功能。 存储层:将处理后的数据高性能安全的写入磁盘,或从磁盘中 阅读全文
摘要:
什么是MySQL的页? 页是指存储引擎使用的最小的数据存储单位。 当 MySQL 执行读取或写入操作时,是以页为基本单位来进行操作的。即使读写一条数据,MySQL 也会按页操作。 MySQL 的存储引擎会将数据分成多个页,并根据需要将这些页加载到内存中进行处理。 通过使用页来组织数据,MySQL 能 阅读全文
摘要:
简介 mysql explain(或desc)用于分析SQL语句的执行计划,多用于测试查询性能。语法:explain sql... 注意 explain执行DML语句,数据不发生变化。 explain执行的结果可以有多条数据,一条数据对应一个表,如果涉及union,MySQL内部会产生一个临时表,就 阅读全文