
数据库
文章平均质量分 79
尔等同学
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【MySQL 45讲-12】第12讲mysql时不时抽风的原因
12 | 为什么我的MySQL会抖一下? 前言 一条SQL偶尔特别慢,且场景难复现,原因? 做个比喻 粉板:redo log 掌柜的记忆: 内存 账本: 数据文件 脏页:内存数据页与磁盘数据页内容不一致 刷脏页: 将内存页写入磁盘 抖一下:可能实在刷脏页,平常执行很快的更新操作实在写内存和日志 什么情况会引发数据库的flush过程? 粉板满了,记不下了 (redo log写满了,系统停止所有更新操作) 尽量避免这种情况,全阻塞了,更新数跌为0 生意太好,掌柜要.原创 2022-02-27 21:11:13 · 560 阅读 · 0 评论 -
【MySQL 45讲-11】第11讲 怎么给字符串字段加索引
11 | 怎么给字符串加索引? 要解决的问题:支持邮箱登录的情况下,如何给邮箱加索引? 前缀索引 alter table SUser add index index2(email(6)) email(6) 这个索引结构中每个邮箱字段都只取前 6 个字节(即:zhangs),所以占用的空间会更小,这就是使用前缀索引的优势 可能会增加额外的记录扫描次数 使用前缀索引,定义好长度,就可以做到既节省空间,又不用额外增加太多的查询成本 区分度不够时用不了前缀索引,可试试倒叙存储 记得用coun.原创 2022-02-27 20:52:03 · 615 阅读 · 0 评论 -
【MySQL 45讲-10】第10讲MySQL如何选择索引
10 | MySQL为什么有时候会选错索引? (可进行项目扩展) 优化器的逻辑 优化器的工作: 选择索引 选择索引 目标: 最小的代价执行 扫描行数 根据统计信息来估算记录数 统计信息不准确,用analyze table来解决 基数越大,索引的区分度越好 基数:一个索引上不同值得个数 使用show index方法查询索引基数 MySQL如何得到索引的基数? 采样统计,默认选择N个数据页,统计这些页面上的不同的值,得到平均值再乘以页面数 区分度:统计信息 使.原创 2022-02-27 20:39:05 · 634 阅读 · 0 评论 -
【MySQL 45讲-9】第9讲普通索引和唯一索引
09 | 普通索引和唯一索引,应该怎么选择? 查询过程 举个栗子 select id from T where k=5 查找过程:从B+树的树根开始,按层搜索到叶节点(数据页),然后根据二分法在数据页内部来定位。 建立普通索引还是唯一索引? 普通索引:查到第一个满足的记录后,需要查找下一个记录,直到碰到不满足k=5,结束 唯一索引:因为有唯一性,所以找到了第一个满足的记录后就结束了 性能差距:微乎其微 InnoDB按数据页为单位读写 所以都是读取一页,只是怕普通索引要多做一次查找.原创 2022-02-27 20:28:08 · 704 阅读 · 0 评论 -
【MySQL 45讲-8】第8讲 事务隔离性及快照的实现
总览图 08 | 事务到底是隔离的还是不隔离的? 当一个事务进入等待状态,那么等到这个事务自己获取到行锁要更新数据时,他读到的值是什么? begin/start transaction并不是一个事务的起点,在执行到他们之后的第一个操作表的语句,事务才真正启动。 想要马上启动一个事务 可以使用 start transaction with consistent snapshot 这个命令 举个栗子(id,k) values(1,1,)(2,2) 事务B:k=3 事务A:k=1 视图原创 2022-02-20 22:07:15 · 868 阅读 · 0 评论 -
【MySQL 45讲-6&7】第6&7讲 数据库的锁
总览图 06 | 全局锁和表锁 锁的设计初衷:处理并发问题 锁的分类 全局锁 表级锁 行锁 全局锁 对整个数据库实例加锁 加全局读锁的命令: Flush tables with read lock(FTWRL) 数据更新语句(数据的增删改)、数据定义语句(包括建表、修改表结构等)和更新类事务的提交语句。这些语句会被阻塞 典型使用场景:全库逻辑备份 即:把整个库的表都select出来存成文本 用mysqldump使用参数-single-transaction来启动一个事务原创 2022-02-17 21:08:41 · 775 阅读 · 0 评论 -
【MySQL 45讲-5】第5讲-索引下
总览图 05 | 深入浅出索引(下) 例子 select * from T where k between 3 and 5需要执行几次树的搜索操作? 在k索引树上找到k=3的记录,取得ID=300; 在主键索引树上查到ID=300对应的R3; 在k索引树上取下一个值k=5,取得ID=500; 再回到主键索引树上查到ID=500对应的R4; 在k索引树上取下一个值k=6,不符合条件,循环结束。 查询过程读了 k 索引树的 3 条记录(步骤 1、3 和 5),回表了两次(步骤 2 和原创 2022-02-16 21:43:18 · 744 阅读 · 0 评论 -
【MySQL 45讲-4】第4讲-索引上
总览图 04 索引(上) 索引是为了提高数据查询的效率,类似于书的目录 索引常见模型 哈希表 键值对来存储数据 思路:将值放在数组里,用一个哈希函数把key换算成一个确定的位置,然后把value放在数组的这个位置。 哈希碰撞:拉链法 因为不是有序的,所以哈希索引做区间查询的速度很慢 适用情景:只有等值查询,如Mencached、NoSQL 有序数组 适用场景:等值查询和范围查询 但更新数据时成本过高 需要挪动数据 所以只适用于静态存储引擎,(不会再修改的数据) 搜索树原创 2022-02-16 21:32:26 · 624 阅读 · 0 评论 -
【MySQL 45讲-3】第3讲-事务隔离
事务隔离 MySQL原生引擎MyISAM不支持事务,所以被InnoDB取代。 事务, ACID(Atomicity、Consistency、Isolation、Durability,即原子性、一致性、隔离性、持久性) redis 的隔离性是? redis 的事务中的隔离性并没有保证原子性,已经做过的操作是不会rollback的。 它的隔离性是指其他事务不会干扰到它自己的事务。 隔离性与隔离级别 隔离性Isolation:一个事务执行时不能受其他事务的干扰。 隔离级别 读未提交 read uncommi.原创 2022-01-20 15:58:29 · 686 阅读 · 0 评论 -
【MySQL 45讲-1&2】第1讲和第2讲
本系列笔记学习MySQL 45讲,思维导图来源网络,侵删。 总览图 1.sql执行过程 先查询缓存 一般不建议使用查询缓存,因为一个表的更新会导致这个表的缓存结果失效,重复的建立缓存并不是高效的使用办法。除非这个表不会经常变动,如系统配置表 query_cache_type=demand, 默认的都不使用查询缓存 使用查询缓存: SQL_CACHE显式指定 没命中缓存会去执行语句 分析器做词法分析(分析每个字符串)、语法分析(判断是否满足语法) 分析器处理后会经过优化器处理 优化器的作用是选择使用哪种方案原创 2021-12-25 18:48:22 · 156 阅读 · 0 评论 -
MySQL 服务正在启动 . MySQL 服务无法启动。 服务没有报告任何错误。
大致说一下问题的解决思路: 先按照提示看下面的博客,然后跟着操作.基本可以解决,先去 找 存放数据库的文件夹,把 所有数据备份.再进行操作. 白给两小时的我,找到了下面比较有用的博客. MySQL 服务正在启动 . MySQL 服务无法启动。 服务没有报告任何错误。 https://blog.youkuaiyun.com/koloumi/article/details/83117497 ...原创 2019-08-17 18:18:48 · 721 阅读 · 0 评论 -
SpringBoot+MQ+Redis+BootStrap 秒杀系统(二) 登录业务之多次md5加密
项目地址:https://github.com/wannengdek/spring-boot-seckill 如果项目对您有所帮助,麻烦帮忙点亮小⭐⭐ 登录业务 1、数据库设计 DROP TABLE IF EXISTS `miaosha_user`; CREATE TABLE `miaosha_user` ( `id` bigint(20) NOT NULL AUTO_INCRE...原创 2019-08-14 19:07:27 · 444 阅读 · 0 评论 -
SQL优化(一) mysql逻辑分层、索引、优化
MySQL优化(一) 1、原理 MYSQL逻辑分层 : 连接层、服务层、引擎层、存储层 [外链图片转存失败(img-bJ3DEt8I-1564636624935)(Untitled.assets/1564635915874.png)] 查询数据库引擎: 支持哪些引擎? show engines ; 查看当前使用的引擎 show variables like ‘%storage_engine%’...原创 2019-08-01 13:26:52 · 482 阅读 · 0 评论 -
MySQL优化(一)
文章目录MySQL优化(一)1、原理MYSQL逻辑分层 :查询数据库引擎:2、SQL优化SQL :SQL优化, 主要就是 在优化索引B树的原理图:3、索引分类创建索引:4、SQL性能(1)id(2)select_type:查询类型(3)type 类型 MySQL优化(一) 1、原理 MYSQL逻辑分层 : 连接层、服务层、引擎层、存储层 查询数据库引擎: 支持哪些引擎? show engines...原创 2019-08-03 23:25:28 · 150 阅读 · 0 评论 -
数据库学习——查询、子查询、视图
1.基本操作 查询:select * from 表名 删除: 删除表:drop table [表名] 删除指定列:delete from [表名] where [条件] 更新:update [表名] set [列名=表达式] [where + 条件] 增加: 增加一列: alert table [表名] add [列名] [列属性] 2.关键字 count cout(*)...原创 2019-04-20 22:05:31 · 289 阅读 · 0 评论 -
图书管理系统设计
图书管理系统设计 设计要求: 设计图书管理数据库,基础数据包括图书信息、读者信息、读者借阅图书联系。 画出E-R图,并使用sql实现数据的定义,注意关系的完整性约束条件。 需求分析 学生可以查看自己借阅的书籍、可以查阅书籍信息。 管理可以查看所有学生借阅的书籍。 学生归还图书之后,系统自动修改书籍的借阅信息。 管理员可以增加、修改、删除图书。 管理员可以注销学生信息。 ...原创 2019-03-27 22:37:42 · 25486 阅读 · 0 评论 -
LeetCode数据库解题记录及总结
596. 超过5名学生的课 方法1:使用 group by 和 子查询 先去重查出每个class里有几个学生,然后再挑选出符合要求的记录。 SELECT class, COUNT(DISTINCT student) FROM courses GROUP BY class ; 然后进行子查询 SELECT class FROM ( SELECT class, COUNT(DIS...原创 2019-04-01 17:31:17 · 606 阅读 · 0 评论 -
数据库练习
数据库练习 设有一个数据库SPJ数据库,包括S、P、J及SPJ 4个关系模式: S(SNO,SNAME,STATUS,CITY); P(PNO,PNAME,COLOR,WEINGHT); J(JNO,JNAME,CITY); SPJ(SNO,PNO,JNO,QTY)。 供应商表由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)。 零件表由零件代...原创 2019-03-25 20:13:40 · 3202 阅读 · 0 评论 -
数据库学习——绪论
1.思维导图 2.总结 3.思维导图导出的文字版思维导图 1.思维导图(下载到本地即可完整查看) 2.总结 数据库指的是以一定方式储存在一起、能为多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。它具有整体性、共享性。常用的有Access、MySQL、oracle数据库三种数据库。在初学时使用mysql更容易上手。 绪论中含有较多的概念,需要认真掌握才行,这对于以后...原创 2019-03-04 18:12:45 · 364 阅读 · 0 评论