菜鸟笔记
提升您的技术认知

MySQL 笔记 第4页

日志系统:一条更新SQL是如何执行的?

菜鸟阅读 : 413赞(1)

1. Update语句执行基本流程 首先,我们先创建一个表,拥有两个字段,ID(主键,整形)和 c(整形) mysql> create table T(ID int primary key,c int); 接着,我们对于ID=2的行进...

基础架构:一条查询SQL是如何执行的?

菜鸟阅读 : 373赞(1)

1. MySQL整体架构 MySQL可以分为Server层和存储引擎,而我们通常使用的连接命令是客户端工具。 Server层主要是对于用户的SQL语句进行处理,涵盖MySQL的大部分核心功能。还包括内置函数,视图,触发器,存储过程等。 存储...

全局锁和表级锁

菜鸟阅读 : 400赞(1)

1. 全局锁 顾名思义,全局锁就是对整个数据库实例加锁。 MySQL提供了一个加全局读锁的方法,命令是Flush tables with read lock(FTWRL)。当使用了这个命令,整个数据库都处于只读状态,下列几种线程会被阻塞: ...

行锁:怎么减少行锁对性能的影响

菜鸟阅读 : 425赞(1)

1.行锁的定义 MySQL的行锁是在引擎层由各个引擎自己实现的。但是并不是所有引擎都支持行锁。比如MyISAM引擎就不支持行锁,不支持行锁意味着并发控制只能用表锁,也就是同一张表在任何时刻只能有一个更新在执行。而InnoDB是支持行锁的,这...

事务到底是隔离还是不隔离?

菜鸟阅读 : 381赞(1)

1. 引例 之前我们探讨过可重复读隔离级别下,事务T启动的时候会创建一个视图read-view。在事务T执行期间,即使有其他事务修改了数据,事务T看到的也是跟启动时一样的。 但是上次讲到行锁的时候,当事务T要更新当前行的时候,其他事务占据了...

普通索引还是唯一索引?

菜鸟阅读 : 398赞(1)

1.引例 假设现在维护着一个市民系统,每个人都有唯一的一个身份证号,而且业务代码已经保证了不会写入两个重复的身份证号,如果市民系统需要按照身份证号查姓名,就会执行下面的SQL语句: mysql> select name from CU...

如何给字符串字段加索引?

菜鸟阅读 : 523赞(1)

1.引例 现在的系统中,很多都会包含邮箱字段,那要如何给这个字段建立索引呢? 假设,现在维护了一个用户表,其中包含邮箱,定义如下: mysql> create table SUser( ID int primary key, emai...

count()这么慢,我们该怎么办

菜鸟阅读 : 471赞(1)

1. count(*)的实现方式 对于不同的MySQL存储引擎,count(*)有不同的实现方式。 MyISAM引擎把一个表的总行数存在了磁盘上,因此执行count(*)的时候会直接返回这个数,执行效率很高。 InnDB引擎在执行count...

orderby是如何工作的?

菜鸟阅读 : 366赞(1)

1. 引言 假设我们现在有一个市民表定义如下: create table t( id int(11) not null, city varchar(16) not null, name varchar(16) not null, age i...

数据库的三大范式

菜鸟阅读 : 735赞(1)

1.为什么需要数据库设计 设计数据表的时候,要考虑很多的问题: 用户需要哪些数据,我们在数据表中要保存哪一些数据 怎么保证数据表中的数据的正确性 如何降低数据表的冗余度 开发人员怎么才能更方便的使用数据库 如果数据库设计得不合理的话,可能导...