摘要:
一、环境 VMWare+Centos7 二、写在前面的话 安装GCC最简单的方式当然是【yum -y install gcc】但是我的机器上安装下来后,其版本是4.8.5,感觉有点低,所以想升级一下(7.2.0, 8.2.0之类的版本)。于是需要手动安装。 三、吃过的坑 1. 本地没有GCC导致编译 阅读全文
摘要:
-Dfile.encoding=GBK 阅读全文
摘要:
Mysql 系列文章主页 从 这篇 文章中,我们知道 Mysql 并发事务会引起更新丢失问题,解决办法是锁。所以本文将对锁(乐观锁、悲观锁)进行分析。 第一部分 悲观锁 1 概念(来自百科) 悲观锁,正如其名,它指的是对数据被外界(包括当前系统的其它事务,以及来自外部系统的事务处理)修改持保守态度, 阅读全文
摘要:
Mysql 系列文章主页 刚开始学习 Mysql 锁的时候,觉得 Mysql 使用的是行锁,再加上其默认的可重复读的隔离级别,那就应该能够自动解决并发事务更新的问题。可事实上,并不能解决! 可是,为什么不能解决呢? 带着问题,自己写了个简单Demo,来测试并分析其中道理: Demo 代码路径:htt 阅读全文
摘要:
Mysql 系列文章主页 Tips:在阅读本文前,最好先阅读 这篇(Mysql锁机制--行锁)文章~ 在上篇文章中,我们看到InnoDB默认的行锁可以使得操作不同行时不会产生相互影响、不会阻塞,从而很好的解决了多事务和并发的问题。但是,那得基于一个前提,即 Where 条件中使用上了索引;反之,如果 阅读全文
摘要:
Mysql 系列文章主页 1 准备数据 1.1 建表 1.2 插入数据 提示:这里插入了 id=1 & id=3 的两条记录,偏偏没有插入 id=2 的记录,这是为什么呢?后面会用到。 2 测试 2.1 准备 还是老规矩,两个会话(终端),左边是白色背景的,右边是黑色背景的,并且均设置 autoco 阅读全文
摘要:
Mysql 系列文章主页 1 准备数据 1.1 建表 注意:ENGINE 是 INNODB(因为 InnoDB 才支持行锁) 1.2 插入数据 2 测试 2.1 测试前准备 准备两个会话(终端、命令行),一个白色的(记为:左),一个黑色的(记为:右) 两个会话均设置 autocommit = 0 命 阅读全文
摘要:
Mysql 系列文章主页 1 准备数据 1.1 建表 1.1.1 建立 Employee表 1.1.2 建立 Department 表 1.1.3 注意:上述两张表的存储引擎都是 MyISam 1.2 插入数据 2 测试 2.1 给 Employee 表加上写锁 2.2 查询 Employee 表 阅读全文
摘要:
Mysql 系列文章主页 1 概念 在 Java 程序中,当多线程并发访问某个资源的时候,如果有非线程安全的操作,那么需要通过加锁来保护之。同理,在 Mysql 中,如果也有多个线程、多个事务并发访问某些资源(比如写同一行记录)时,也需要锁来保护,以确保数据的正确性。 2 分类 从对数据的操作类型来 阅读全文
摘要:
Mysql 系列文章主页 1 准备数据 1.1 建表 1.1.1 建立 Employee表 1.1.2 建立 Department 表 1.1.3 注意:上述两张表的存储引擎都是 MyISam 1.2 插入数据 2 测试 2.1 给 Employee 表加上读锁 2.2 查询 Employee 表 阅读全文