MySQL修改表结构到底会不会锁表?

2021-12-21
阅读 3 分钟
8.1k
DDL(Data Definition Languages)语句:数据定义语言,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象的定义。常用的语句关键字主要包括 create、drop、alter 等。
封面图

MySQL事务的多版本并发控制(MVCC)实现原理

2021-11-15
阅读 9 分钟
8.2k
多版本并发控制(MVCC) 是通过保存数据在某个时间点的快照来实现并发控制的。也就是说,不管事务执行多长时间,事务内部看到的数据是不受其它事务影响的,根据事务开始的时间不同,每个事务对同一张表,同一时刻看到的数据可能是不一样的。

MySQL事务的隔离级别与并发问题

2021-11-01
阅读 6 分钟
3.2k
MySQL事务的隔离级别与并发问题MySQL版本:8.0.27一、事务并发执行面临的问题 {代码...} {代码...} {代码...} 将事务隔离级别设为读未提交,方便演示 {代码...} 1. 脏读(Dirty Read)如果事务A读到了未提交的事务B修改过的数据,就意味着发生了脏读现象。事务A事务Bbegin;begin;SELECT * FROM user WHERE id=10;--UPDAT...

MySQL为什么varchar字段用数字查无法命中索引,而int字段用字符串查却能命中?

2021-07-19
阅读 8 分钟
7.4k
字符串字段误使用数字进行查询,会导致隐式类型转换,无法命中索引的坑我相信大多数小伙伴都踩过。特别是当字段中存的大多数数据都是数字时,很容易先入为主地认为字段是 int 类型,错误地使用类似 where file_id=123456789 执行了查询。好一点的可能事先通过 Explain 命令查看语句的执行计划,发现竟然没用命中索引,从...
封面图

MySQL Explain命令详解:type列详解及案例分析

2020-11-04
阅读 17 分钟
8.3k
Explain 命令中的 type 列,显示MySQL查询所使用的 关联类型(Join Types) 或者 访问类型,它表明 MySQL决定如何查找表中符合条件的行。常见访问类型性能由最差到最优依次为:ALL < index < range < index_subquery < unique_subquery < index_merge < ref_or_null < fulltext < ref < eq_r...

MySQL索引有哪些分类,你真的清楚吗?

2020-11-01
阅读 4 分钟
22k
按数据结构分类可分为:B+tree索引、Hash索引、Full-text索引。按物理存储分类可分为:聚簇索引、二级索引(辅助索引)。按字段特性分类可分为:主键索引、普通索引、前缀索引。按字段个数分类可分为:单列索引、联合索引(复合索引、组合索引)。

MySQL的多版本并发控制(MVCC)是什么?

2020-10-21
阅读 3 分钟
30.6k
多版本并发控制(MVCC) 是通过保存数据在某个时间点的快照来实现并发控制的。也就是说,不管事务执行多长时间,事务内部看到的数据是不受其它事务影响的,根据事务开始的时间不同,每个事务对同一张表,同一时刻看到的数据可能是不一样的。

MySQL逻辑架构 - SQL语句的执行都经历了哪些步骤

2020-07-05
阅读 4 分钟
2.9k
Server 层包括连接器、查询缓存、分析器、优化器、执行器,涵盖MySQL的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能也在这一层实现,包括 存储过程、触发器、视图等。

MySQL基础知识点整理 - 事务

2020-05-24
阅读 5 分钟
2.7k
事务就是一组原子性的SQL查询,或者说一个独立的工作单元。如果数据库引擎能够成功地对数据库应用该组查询的全部语句,那么就执行该组查询。如果其中有任何一条语句因为崩溃或其他原因无法执行,那么所有的语句都不会执行。也就是说,事务内的语句,要么全部执行成功,要么全部执行失败。在整个过程中,无论事务是否成功...

搞定PHP面试 - MySQL基础知识点整理 - 账号和权限管理

2019-06-29
阅读 11 分钟
3.5k
MySQL用户账号和信息存储在名为 mysql 的数据库中。一般不需要直接访问 mysql 数据库和表,但有时需要直接访问。例如,查看数据库所有用户账号列表时。

搞定PHP面试 - MySQL基础知识点整理 - 数据类型和数据表管理

2019-06-29
阅读 13 分钟
3.1k
int(n) 只影响显示字符的宽度,不限制数值的合法范围。int(3) 依然可以存储 123456789 这么大的数值。若设置了 zerofill 属性,当 int(3) 存储 12 时,会在前面补0,补足3位。即 012;当 int(5) 存储 12 时,会在前面补三个0,补足5位。即 00012

搞定PHP面试 - MySQL基础知识点整理 - 存储引擎

2019-06-21
阅读 5 分钟
2.8k
InnoDB 是 MySQL 默认的存储引擎,也是最重要、使用最广泛的存储引擎。InnoDB 的性能和自动崩溃恢复特性,使得它在非事务型存储的需求中也很流行。除非有非常特别的原因需要使用其他的存储引擎,否则应该优先考虑 InnoDB 引擎。

关于用户关注粉丝表设计方案的思考

2017-12-29
阅读 2 分钟
18.1k
方案一 follow(关注关系表) 字段名 类型 索引 注解 id primaryKey() user_id integer()->unsigned()->notNull() normal 用户 followed_user integer()->unsigned()->notNull() 关注的人的id status smallInteger()->unsigned()->defaultValue(1) 关注状态:是否取消关注等 created_at integer()->un...

Yii2实现跨mysql数据库关联查询排序功能

2017-01-13
阅读 4 分钟
3.2k
背景:在一个mysql服务器上(注意:两个数据库必须在同一个mysql服务器上)有两个数据库: memory (存储常规数据表) 中有一个 user 表(记录用户信息) memory_stat (存储统计数据表) 中有一个 user_stat (记录用户统计数据)

连接远程mysql数据库失败常见原因及解决办法

2016-11-09
阅读 4 分钟
7.4k
1.找到mysql数据库的user表。在user表中新建一条数据,设置User(username)和Host(开放访问MySQL的IP:例如123.118.17.201)以及登录密码。这样就设置了允许访问的用户名和IP地址(若想所有IP都可以访问,则可将Host设置为‘%’,但是这样很危险,不建议)。