![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库
yyhhlancelot
心之所向,素履以往。
展开
-
MySQL学习笔记(五)数据库里的锁:全局锁、表锁和行锁
数据库是多用户共享的资源,当出现并发访问时,通过锁这一数据结构来实现访问规则。数据库的锁大致分为全局锁/表级锁和行锁。全局锁对整个数据库实例加锁。当需要整个库处于只读状态时,可使用Flush tables with read lock (FTWRL),之后数据更新与居家(增删)、数据定义语句(建表、修改结构等)和更新类事务的提交语句会被阻塞。典型应用场景是全库逻辑备份。把整个库select...原创 2020-04-17 14:38:43 · 239 阅读 · 0 评论 -
MySQL学习笔记(一)基础架构
大体来说,MySQL可以分为Server层和存储引擎层两部分。Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖MySQL大多数核心服务功能,以及所有内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等等。而存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持InnoDB、MyISAM、Memory等多个存...原创 2019-05-08 20:03:02 · 209 阅读 · 0 评论 -
MySQL学习笔记(二)一条SQL更新语句
一条更新语句的执行流程从一个表的一条更新语句说起,下面是这个表的创建语句,这个表有一个主键ID和一个整型字段cmysql> create table T(ID int primary key, c int);假如将ID=2这一行的值加1mysql> update T set c=c+1 where ID=2;执行语句要先通过连接器连接数据库。在一个表上更新...原创 2019-05-14 15:50:52 · 302 阅读 · 0 评论 -
MySQL学习笔记(四)索引(下)
在上述那个表中,如果执行了select * from T where k between 3 and 5,需要执行几次树的搜索操作,会扫描多少行?表的初始化语句:mysql> create table T (ID int primary key,k int NOT NULL DEFAULT 0,s varchar(16) NOT NULL DEFAULT '',index ...原创 2019-05-20 22:03:04 · 166 阅读 · 1 评论 -
MySQL学习笔记(三)事务
事务就是保证一组数据库操作,要么全部成功,要么全部失败。MySQl,事务支持是在引擎层实现的。隔离性与隔离级别数据库多个事务同时执行,可能出现脏读(dirty read)/不可重复读(non-repeatable read)/幻读(phantom read)的问题。为了解决这些问题,就有了“隔离级别”的概念。读未提交(read uncommitted)、读提交(read committ...原创 2019-05-16 17:00:55 · 111 阅读 · 0 评论 -
MySQL学习笔记(四)索引(上)
经常可能发生,某个SQL查询比较慢,分析完原因后,可能就会想到“给某个字段加个索引”这样的方案。索引的出现就是为了提高数据查询的效率。索引的常见模型实现索引的方式有很多种,所以这里也就引入了索引模型。比较常见的,哈希表、有序数组和搜索树。哈希表以键值对存储数据,只要输入对应的key,就可以找到对应的value。哈希的思路,把值放到数组里,用一个哈希函数把key换算成一个确定的位置,...原创 2019-05-18 16:24:14 · 156 阅读 · 0 评论