随笔分类 -  数据库

MySQL死锁问题(转)
摘要:线上某服务时不时报出如下异常(大约一天二十多次):“Deadlock found when trying to get lock;”。 Oh, My God! 是死锁问题。尽管报错不多,对性能目前看来也无太大影响,但还是需要解决,保不齐哪天成为性能瓶颈。 为了更系统的分析问题,本文将从死锁检测、索引 阅读全文

posted @ 2020-07-14 15:54 wsw_seu 阅读(217) 评论(0) 推荐(0)

mysql一些好的问题
摘要:一、“N叉树”的N值在MySQL中是可以被人工调整吗? 1, 通过改变key值来调整N叉树中非叶子节点存放的是索引信息,索引包含Key和Point指针。Point指针固定为6个字节,假如Key为10个字节,那么单个索引就是16个字节。如果B+树中页大小为16K,那么一个页就可以存储1024个索引,此 阅读全文

posted @ 2020-07-13 15:47 wsw_seu 阅读(762) 评论(0) 推荐(0)

MVCC(转)
摘要:什么是 MVCC MVCC (Multiversion Concurrency Control) 中文全程叫多版本并发控制,是现代数据库(包括 MySQL、Oracle、PostgreSQL 等)引擎实现中常用的处理读写冲突的手段,目的在于提高数据库高并发场景下的吞吐性能。 如此一来不同的事务在并发 阅读全文

posted @ 2020-07-13 14:49 wsw_seu 阅读(196) 评论(0) 推荐(0)

极客mysql03
摘要:1、务的特性:原子性、一致性、隔离性、持久性 2、多事务同时执行的时候,可能会出现的问题:脏读、不可重复读、幻读 3、事务隔离级别:读未提交、读提交、可重复读、串行化 4、不同事务隔离级别的区别: 读未提交:一个事务还未提交,它所做的变更就可以被别的事务看到 读提交:一个事务提交之后,它所做的变更才 阅读全文

posted @ 2020-07-13 14:47 wsw_seu 阅读(105) 评论(0) 推荐(0)

极客mysql02
摘要:mysql 一条更新语句的执行过程: 1.首先客户端通过tcp/ip发送一条sql语句到server层的SQL interface 2.SQL interface接到该请求后,先对该条语句进行解析,验证权限是否匹配 3.验证通过以后,分析器会对该语句分析,是否语法有错误等 4.接下来是优化器器生成相 阅读全文

posted @ 2020-07-09 17:10 wsw_seu 阅读(101) 评论(0) 推荐(0)

极客mysql01
摘要:1.MySQL的框架有几个组件, 各是什么作用?连接器:负责跟客户端建立连接、获取权限、维持和管理连接。查询缓存:查询请求先访问缓存(key 是查询的语句,value 是查询的结果)。命中直接返回。不推荐使用缓存,更新会把缓存清除(关闭缓存:参数 query_cache_type 设置成 DEMAN 阅读全文

posted @ 2020-07-09 15:50 wsw_seu 阅读(116) 评论(0) 推荐(0)

Mysql之存储过程与存储函数
摘要:1 存储过程 1.1 什么是存储过程 存储过程是一组为了完成某项特定功能的sql语句集,其实质上就是一段存储在数据库中的代码,他可以由声明式的sql语句(如CREATE,UPDATE,SELECT等语句)和过程式sql语句(如IF...THEN...ELSE控制结构语句)组成。存储过程思想上很简单, 阅读全文

posted @ 2020-07-09 15:17 wsw_seu 阅读(475) 评论(0) 推荐(0)

MySQL视图详细介绍
摘要:前言: 在MySQL中,视图可能是我们最常用的数据库对象之一了。那么你知道视图和表的区别吗?你知道创建及使用视图要注意哪些点吗?可能很多人对视图只是一知半解,想详细了解视图的同学看过来哟,本篇文章会详细介绍视图的概念、创建及使用方法。 1.视图定义及简单介绍 视图是基于 SQL 语句的结果集的可视化 阅读全文

posted @ 2020-07-09 14:55 wsw_seu 阅读(343) 评论(0) 推荐(0)

mysql 触发器的创建和使用
摘要:什么是触发器 触发器(TRIGGER)是MySQL的数据库对象之一,从5.0.2版本开始支持。该对象与编程语言中的函数非常类似,都需要声明、执行等。但是触发器的执行不是由程序调用,也不是由手工启动,而是由事件来触发、激活从而实现执行。有点类似DOM中的事件。 那么为什么要使用数据库对象触发器呢?在具 阅读全文

posted @ 2020-07-09 14:41 wsw_seu 阅读(1495) 评论(0) 推荐(0)

MySQL慢查询开启、日志分析(转)
摘要:说明 Mysql的查询讯日志是Mysql提供的一种日志记录,它用来记录在Mysql中响应时间超过阈值的语句 具体指运行时间超过long_query_time值得SQL,则会被记录到慢查询日志中。long_query_time的默认为10,意识是运行10秒以上的语句。 由它来看那些SQL语句超出了我们 阅读全文

posted @ 2020-07-04 12:12 wsw_seu 阅读(252) 评论(0) 推荐(0)

MySQL中EXPLAIN结果的参数详解
摘要:explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。 使用方法,在select语句前加上explain就可以了。如: mysql> explain select word from words order by rand() li 阅读全文

posted @ 2020-07-04 10:46 wsw_seu 阅读(1049) 评论(0) 推荐(0)

InnoDB事务的二阶段提交
摘要:问题: 什么是二阶段提交 为什么需要二阶段提交 二阶段提交流程 什么是二阶段提交? ### 假设原来id 为10 的记录age 为5 begin; update student set age = 10 where id = 10; commit; 复制代码 一般情况下,事务提交涉及redo log 阅读全文

posted @ 2020-06-30 21:11 wsw_seu 阅读(857) 评论(1) 推荐(1)

自适应哈希索引(Adaptive Hash Index, AHI) 转
摘要:Adaptive Hash Index, AHI 场景 比如我们每次从辅助索引查询到对应记录的主键,然后还要用主键作为search key去搜索主键B+tree才能找到记录. 当这种搜索变多了,innoDB引擎会进行优化. 维护索引叶页面中所有记录的索引键值(或键值前缀)到索引叶页面位置的Hash映 阅读全文

posted @ 2020-03-08 17:03 wsw_seu 阅读(476) 评论(0) 推荐(0)

innodb为什么需要doublewrite(转)
摘要:InnoDB的page size默认是16KB,而操作系统的一个block size是4KB,磁盘io block则更小。那么InnoDB的page刷到磁盘上要写4个操作系统block,在极端情况下(比如断电)不一定能保证4个块的写入原子性,假如只有一部分写是成功的,那么innodb的数据page就 阅读全文

posted @ 2020-03-08 15:16 wsw_seu 阅读(302) 评论(0) 推荐(0)

InnoDB Insert Buffer(插入缓冲 转)
摘要:一,插入缓冲(Insert Buffer/Change Buffer):提升插入性能 只对于非聚集索引(非唯一)的插入和更新有效,对于每一次的插入不是写到索引页中,而是先判断插入的非聚集索引页是否在缓冲池中,如果在则直接插入;若不在,则先放到Insert Buffer 中,再按照一定的频率进行合并操 阅读全文

posted @ 2020-03-08 15:14 wsw_seu 阅读(245) 评论(0) 推荐(0)

实例解读什么是Redis缓存穿透、缓存雪崩和缓存击穿(转)
摘要:Redis缓存的使用,极大的提升了应用程序的性能和效率,特别是数据查询方面。但同时,它也带来了一些问题。其中,最要害的问题,就是数据的一致性问题,从严格意义上讲,这个问题无解。如果对数据的一致性要求很高,那么就不能使用缓存。 另外的一些典型问题就是,缓存穿透、缓存雪崩和缓存击穿。目前,业界也都有比较 阅读全文

posted @ 2020-03-05 20:42 wsw_seu 阅读(230) 评论(0) 推荐(0)

redis乐观锁
摘要:乐观锁(又名乐观并发控制,Optimistic Concurrency Control,缩写“OCC”),是一种并发控制的方法。它假设多用户并发的事务在处理时不会彼此互相影响,各事务能够在不产生锁的情况下处理各自影响的那部分数据。在提交数据更新之前,每个事务会先检查在该事务读取数据后,有没有其他事务 阅读全文

posted @ 2018-06-24 16:13 wsw_seu 阅读(648) 评论(0) 推荐(0)

MySQL的InnoDB的幻读问题
摘要:MySQL InnoDB事务的隔离级别有四级,默认是“可重复读”(REPEATABLE READ)。 未提交读(READ UNCOMMITTED)。另一个事务修改了数据,但尚未提交,而本事务中的SELECT会读到这些未被提交的数据(脏读)。 提交读(READ COMMITTED)。本事务读取到的是最 阅读全文

posted @ 2018-06-15 10:39 wsw_seu 阅读(156) 评论(0) 推荐(0)

数据库Sharding的基本思想和切分策略(转)
摘要:一、基本思想 Sharding的基本思想就要把一个数据库切分成多个部分放到不同的数据库(server)上,从而缓解单一数据库的性能问题。不太严格的讲,对于海量数据的数据库,如果是因为表多而数据多,这时候适合使用垂直切分,即把关系紧密(比如同一模块)的表切分出来放在一个server上。如果表并不多,但 阅读全文

posted @ 2018-06-08 14:56 wsw_seu 阅读(145) 评论(0) 推荐(0)

第一范式、第二范式、第三范式详解(转自知乎)
摘要:作者:刘慰链接:https://www.zhihu.com/question/24696366/answer/29189700来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 非常感谢刘老师,讲的 首先要明白”范式(NF)”是什么意思。按照教材中的定义,范式是“符合某一 阅读全文

posted @ 2018-03-04 17:14 wsw_seu 阅读(8552) 评论(0) 推荐(0)

导航