03 2024 档案
摘要:Sphinx查询性能非常厉害,亿级数据下输入关键字,大部分能在0.01~0.1秒,少部分再5秒之内查出数据。 Sphinx 官方文档:http://sphinxsearch.com/docs/sphinx3.html 极简概括: 由C++编写的高性能全文搜索引擎的开源组件,C/S架构,跨平台(支持L
阅读全文
摘要:置顶说明 严格来说,所谓人云亦云的接口幂等性,大部分场景是要求接口防重或数据幂等,而不是接口幂等,很多人都搞混了。 举例:后端做了支付防重,用户对单一订单重复支付,再次支付不是提示支付成功(接口幂等是要求多次请求返回的结果一致),而是提示请勿重复支付。 很多时候是防重是保证MySQL表数据的幂等,而
阅读全文
摘要:概念 PHP使用分布式锁,受语言本身的限制,有一些局限性。 通俗理解单机锁问题:自家的锁锁自家的门,只能保证自家的事,管不了别人家不锁门引发的问题,于是有了分布式锁。 分布式锁概念:是针对多个节点的锁。避免出现数据不一致或者并发冲突的问题,让每个节点确保在任意时刻只有一个节点能够对公共资源进行操作,
阅读全文
摘要:前置概念 无并发的解决方案 一些小型项目,或极少有并发的项目,这些策略在无并发情况下,不会有什么问题。 读数据策略:有缓存则读缓存,然后接口返回。没有缓存,查询出数据,载入缓存,然后接口返回。 写数据策略:数据发生了变动,先删除缓存,再更新数据,等下次读取的时候载入缓存,或一步到位更新数据后直接更新
阅读全文
摘要:近期看到了一个前阿里资深开发的学术分析视频: 高并发情况下,一个事务内有更新操作还有查询操作,那是先更新好,还是先无锁查询好? 仅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内部会产生一个临时表,就
阅读全文
摘要:个人认为,90%的公司的数据体量和并发量压根用不上从服务器,结合Redis,一台性能强劲的云MySQL服务器,做好日常备份。足够了。 概念 一个MySQL主(Master)服务器上的数据自动复制到至少一个的MySQL从(Slave)服务器的过程,利用bin log,主服务器上的数据更改会被自动地同步
阅读全文