MySQL逻辑架构:

链接管理与安全性:

MySQL5.5或更高版本版本提供了一个API,支持线程池(Thread-Pooling)插件,可以使用池中的少量线程来服务大量的连接。

优化与并行:

MySQL会解析查询,并创建解析树,然后对其进行各种优化,包括重写查询,决定表的读取顺序,以及选择合适的索引等。

并发控制:

1.读写锁:

读锁为共享锁,相互不阻塞。写锁为排他锁,持有写锁会阻塞其他读写操作。

2.锁粒度:

表锁:写操作(增删改)会锁住整张表。

行级锁:写操作仅锁住修改的行。

事务:

事务就是一组原子性的SQL操作。

START TRANSACTION;

......

COMMIT;

特性:ACID(原子性、一致性、隔离性、持久性)。

隔离级别:

事务之间的相互可见程度。

READ UNCOMMITTED  脏读、不可重复读、幻读

READ COMMITTED  不可重复读、幻读

REPEATABLE READ  幻读

SERIALIZABLE  加锁读

假设有连个并发的事务A、B

1.A事务修改某行未提交,B事务查询,则脏读。

2.A事务修改某行提交,B事务在A事务前与提交后均查询,两次结果不同,即不可重复读。

3.A事务新增某行提交,B事务在A事务提交前范围查询,提交后又范围查询,多查出新增行,即幻读。

4.所有事务串行执行,加锁读。

死锁:

事务1

START TRANSACTION;

update stockPrice set close = 45.50 where stock_id=4 and date = '2002-05-01';

update stockPrice set close = 19.80 where stock_id=3 and date = '2002-05-02';

COMMIT;

事务2

START TRANSACTION;

update stockPrice set high= 20.12 where stock_id=3 and date = '2002-05-02';

update stockPrice set high = 47.20 where stock_id=4 and date = '2002-05-01';

COMMIT;

凑巧两条事务都执行了第一行,持有了对方的锁。要执行第二行的时候需要对方释放锁,会造成死锁。

InnoDB存储引擎会检查死锁的循环依赖并返回一个错误,处理方式是将持有最少行级排他锁的事务回滚。

InnoDB存储引擎:

1.支持事务。

2.自动崩溃恢复。

MyISAM存储引擎:

1.不支持事务。

2.不支持自动崩溃恢复

3.可以压缩表(只读),压缩表可以极大减少磁盘空间

Java进阶——高性能MySQL(一)的更多相关文章

  1. Java进阶(二十五)Java连接mysql数据库(底层实现)

    Java进阶(二十五)Java连接mysql数据库(底层实现) 前言 很长时间没有系统的使用java做项目了.现在需要使用java完成一个实验,其中涉及到java连接数据库.让自己来写,记忆中已无从搜 ...

  2. Java进阶之路

    Java进阶之路——从初级程序员到架构师,从小工到专家. 怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序 ...

  3. 转:java 进阶之路

    转: https://www.zhihu.com/question/39139518 一.基础篇1.1 JVM1.1.1. Java内存模型,Java内存管理,Java堆和栈,垃圾回收 http:// ...

  4. 大型Java进阶专题(一) 前言

    前言 ​ 各位读者好,本系列为Java进阶专题,为那些有一定工作经验,做了多年业务的码农,希望突破技术瓶颈,但没有形成系统的Java只是体系,缺乏清晰的提升方法和学习路径的人,比如作者本人.该课题的是 ...

  5. Java进阶7并发优化4——JDK并发数据结构

    Java进阶7并发优化4——JDK并发数据结构20131114 由于并发程序和串行程序的不同特点,在串行程序中使用的数据结构可能无法在并行程序中直接的正常使用,因为这些数据结构可能不是线程安全的,所以 ...

  6. Java进阶知识点: 枚举值

    Java进阶知识点1:白捡的扩展性 - 枚举值也是对象   一.背景 枚举经常被大家用来储存一组有限个数的候选常量.比如下面定义了一组常见数据库类型: public enum DatabaseType ...

  7. java进阶视频分享

    更多资源和教程请关注公众号:非科班的科班. 如果觉得我写的还可以请给个赞,谢谢大家,你的鼓励是我创作的动力 课程目录介绍 01.开班仪式02.并发编程专题之多线程基础03.并发编程专题之Java内存模 ...

  8. 【高性能Mysql 】读书笔记(一)

    第1章 Mysql架构与历史 MYSQL最重要.最与众不同的特性是它的存储引擎架构,这种架构的设计将查询处理( Query Processing)及其他系统任务( Server Task)和数据的存储 ...

  9. Java进阶专题(十八) 系统缓存架构设计 (下)

    前言 上章节介绍了Redis相关知识,了解了Redis的高可用,高性能的原因.很多人认为提到缓存,就局限于Redis,其实缓存的应用不仅仅在于Redis的使用,比如还有Nginx缓存,缓存队列等等.这 ...

随机推荐

  1. matlab 高阶(二) —— 数值、溢出问题的解决

    gammaln() 在处理上溢和下溢方面要比 log(gamma()) 更好: log1p() (1 plus)对于较小的 x 值时,log1p(x) 要比 log(1+x) 更为精确: 当 x 取值 ...

  2. 图解Http协议 url长度限制

    http请求报文的格式 一般请求所带有的属性: http响应报文的格式: 响应首部一般包含如下内容: 一.技术基石及概述 问:什么是HTTP? 答:HTTP是一个客户端和服务器端请求和响应的标准TCP ...

  3. Open SSL 开发环境配置

    Open SSL 开发环境配置 最后更新日期:2014-05-13 阅读前提:VisualStudio的基本使用.Cent OS的基本使用 环境: Windows 8.1 64bit英文版,Visua ...

  4. WPF 画线动画效果实现

    原文:WPF 画线动画效果实现 弄了将近三天才搞定的,真是艰辛的实现. 看了很多博客,都太高深了,而且想要实现的功能都太强大了,结果基础部分一直实现不了,郁闷啊~ 千辛万苦终于找到了一个Demo,打开 ...

  5. Java之java.lang.IllegalMonitorStateException

    今天又中彩了, 原本很简单的多线程程序, 蓦然间冒了个"java.lang.IllegalMonitorStateException" , 杀了个措手不及. 一直纳闷, 为什么为什 ...

  6. 自定义 DependencyProperty 与 RoutedEvent

    原文:自定义 DependencyProperty 与 RoutedEvent //自定义依赖属性 class MyBook : DependencyObject//依赖属性必须派生自Dependen ...

  7. html常用

    常用标签 <head></head> <body></body> <script></script> <a>< ...

  8. p标签内不能嵌套div(注解)

    相关知识: 内联元素可以嵌套内联元素,块级元素可以嵌套部分块级元素并也能嵌套内联元素,但内联元素不能嵌套块级元素.块级元素为block,内联元素为inline,拥有“inline”特性的同时又拥有“b ...

  9. Win10《芒果TV》商店版更新v3.2.6:修复后台任务故障,优化推送频次

    2017湖南卫视大型音乐竞技节目<歌手>,2017年1月21日晚首播第一期,7位歌手惊艳亮嗓,<芒果TV>UWP版迅速更新v3.2.6版,主要是修复后台任务故障,优化推送频次, ...

  10. C#根据对象的指定字段去除重复值

    PersonInfo类: public class PersonInfo { public int Index; public string Name; public override string ...