MySQL之锁

什么是锁 在计算机科学中,锁是在执行多线程是强制限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的满足。 MySQL的锁 MySQL 个存储引擎从锁定范围上有三种级别的锁: 表级锁定 表锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 行级锁定 行锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。 页级锁定 页锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。 从锁的角度来说,表级锁更适合于以查询为主,只有少量按索引条件更新数据的应用,而行级锁则更适合于有大量按索引条件并发更新少

MySQL
发布于 4年前

MySQL之隔离级别

事务隔离性(isolation) 数据库中多个事务并发执行时是相互独立的,一个事务不会影响另外一个事务的执行,事务与事务的隔离是有不同级别的,不同级别情况下事务之间的影响不一样。 不同的事务隔离性会给数据库带来问题 不隔离的事务问题 脏读 脏读是指一个事务执行过程中读取到其他事务更新的数据,但是更新数据的事务最后有因为各种原因回滚了,这种想象叫做脏读,因为第一个事务查到的是一个无意义的数据。脏读举例如下 // 事务1 start transaction; update students set sex=2 where name='洛基'; rollback; // 事务2 select *

MySQL
发布于 4年前

MySQL之事务

事务就是一组 SQL 语句,当数据库执行这组 SQL 的时候要不全部执行这组 SQL,否则只要有一条 SQL 无法执行整组 SQL 都无法执行。 并不是任何执行的 SQL 序列都是事务,事务有以下四个特性: 原子性(atomicity) 一个事务是一个不可分割的最小工作单元,一个事务中的所有操作要么全部执行,要么全部回滚不执行,事务不可能只执行一部分操作。 一致性(consistency) 一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。比如银行账户A转账给B时,无论事务如果执行最后结果A、B的总金额不会变。 隔离性(i

MySQL
发布于 4年前

什么是最烂的代码

最烂的代码不仅挑战你的智商,还挑战你的笑点。刚开始看的时候感觉自己智商不够用,看懂后感觉自己笑点不够高!

杂谈
发布于 4年前

MySQL之插入数据

插入 students 表一条数据包含所有字段的值 insert into students values (1,'0001','洛基',2,25,'2019-12-20 20:00:00','2019-12-20 20:00:00'); 执行 mysql> insert into students values (1,'0001','洛基',2,25,'2019-12-20 20:00:00','2019-12-20 20:00:00'); Query OK, 1 row affected (0.00 sec) 一次插入多条数据包含所有字段的值到 mysql insert into s

MySQL
发布于 4年前

MySQL之创建表

创建表 创建学生表 SQL create table if not exists`students` ( `id` int not null auto_increment comment '学生id', `no` char(5) not null comment '学生学号', `name` varchar(128) not null default '' comment '学生姓名', `sex` tinyint not null default 0 comment '0 无 1 女 2 男', `age` tinyint null default

MySQL
发布于 4年前

MySQL之创建库

MySQL 创建库语法 CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_specification] ... create_specification: [DEFAULT] CHARACTER SET [=] charset_name | [DEFAULT] COLLATE [=] collation_name 创建一个默认的数据库 create database school; 执行结果 mysql> create database school; Query OK, 1 row affecte

MySQL
发布于 4年前

what's is vo、po、dto、bo、pojo、dao、entity

最近接触公司的 java 项目,发现大家对 vo、po、dto、bo、pojo、dao、entity 使用比较乱,所以这里简单整理下。 各名词的作用 VO(value object) 值对象 用于业务之间的数据传输,和 PO 一样只包含数据和对应的 getter 和 setter,可以和数据库中字段对应也可以不对应。 PO(persistent object) 持久化对象 PO 对应于数据库中的一张表,字段和表字段一一对应,PO 只包含数据和对应的 getter 和 setter 函数。在使用中 PO 用来表示数据库查询结果的一条记录,多条记录使用 PO 的集合表示。 DTO(data tra

java
发布于 4年前

震惊!同事小张踩了 gorm 神奇的 Scan 函数的坑

gorm 简介 gorm 是 go 语言中实现的比较好的 ORM 包,且是国人开发的。项目地址 事故描述 Scan 是 gorm 提供的一个把数据库结果读取到 struct 的函数。定义如下: // Scan scan value to a struct func (s *DB) Scan(dest interface{}) *DB { return s.NewScope(s.Value).Set("gorm:query_destination", dest).callCallbacks(s.parent.callbacks.queries).db } 今天同事小张写代码的时候写了一个

go
发布于 4年前

MySQL 字符串比较不区分大小写

最近做了一个简单的短链接服务,短链接使用自增 id 转化为 62 进制(10 个数字+26个小写字母+26个大写字母),但是发现插入数据库报了索引插入重复。 展示 创建测试表 CREATE TABLE `test` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `short_url` varchar(255) NOT NULL COMMENT '测试', PRIMARY KEY (`id`), UNIQUE KEY `short_url` (`short_url`) ) ENGINE=InnoDB AUTO_INCREMENT

数据库
发布于 4年前