mysql数据库事务之间的隔离级别
- READ UNCOMMITTED-事务可以查看其它未提交事务的执行结果,很少用于生产环境,性能也不比其它隔离级别高多少。读取未提交的结果称为“脏读”
- READ COMMITTED-事务可以查看其它已提交事务的执行结果,大多数数据库(除了mysql)都是采用这个默认隔离级别。不可重复读(用户重复查询两次之间别的事务可能已提交导致查询结果不一致)
- REPEATABLE-可重复读,同一个事务的不同实例并发读取会得到同样的结果,但是存在幻读的情况。mysql用MVCC机制消除这种情况
-
SERIALIZABLE-最高隔离级别,强制事务排序,性能低下,存在大量超时情况和锁。
MVCC多版本并发控制
工作原理是保留数据在某个时间点的快照,不同的存储引擎实现方式不一样。innodb对每行数据存储额外的两个隐藏字段记录数据行创建时间以及删除时间。(MVCC仅仅对READ COMMITED和REPEATABLE两种隔离级别有效)下面看看repeatable的实现
- SELECT-行的版本号必须早于或等于事务版本号(事务开始前已创建或由事务创建);数据航删除版本号必须是undefined或者大于事务版本号
- INSERT-innodb指定插入行的版本号为系统当前版本号
- DELETE-指定行的删除版本号为当前系统版本号
- UPDATE-创建一个新的数据航拷贝,使用当前版本号作为新数据行的创建标识和旧数据行的删除标识
数据类型选型原则
- 越小越好-尽量使用能存储数据的最小的数据类型,由于使用更小的磁盘空间,占用更少的内存和cpu缓存,花费更少的cpu周期处理
- 保持简单-使用整型数据而不是字符串做比较,使用内置日期时间类型存储而不要用字符串存储时间,使用整型存储ip地址等
- 尽量避免NULL值-将列定义为not null,mysql不能对null的列做优化,而且null的列使用更多存储空间需要mysql内部特殊处理,当允许null值的字段做索引时,会引入额外花销。如果实在需要使用null,则可以考虑用0或者一个特殊值或者一个空字符串代替。(使用not null带来的性能提升不是很明显,所以数据表已经设计好后就不要专门为这个做修改了)
- ...
数据库基准测试(benchmark)
有两种基本的测试策略:测试整个系统(应用程序)和单独测试数据库mysql
测试整个系统能关注整个系统运行状况,mysql常常不是一个系统的瓶颈(工具有ab,http_load等)。当然如果你想测试某个存储引擎或者设计模式的性能,就需要单独测试数据库,测试的时候需要设计自己关注的目标点——比如每个时间单位执行事务数目,响应时间延时,可扩展性,不同负载下数据库的表现,并发度,对磁盘IO负载高低等,工具有mysqlslap等
MyISAM存储引擎
有不错的性能表现和丰富的特性如下:
锁机制(表级锁而非行级,读获取共享锁,写获取排他锁,通过concurrent inserts实现并发控制)
自动修复表错误
手动修复CHECK TABLE mytable或REPAIR TABLE mytable或者使用myisamchk工具
支持全文索引
延迟写入Delayed key writes
各种引擎比较
相关推荐
MySQL知识点整理 MySQL是目前最流行的开源关系数据库管理系统之一,它的知识点体系非常庞大。下面我们将对MySQL的知识点进行整理和详细解释。 数据类型 MySQL中的数据类型可以分为五大类:数值型、字符串类型、...
### MySQL知识点整理:SQL语句优化 #### 一、引言 MySQL作为一款广泛使用的开源关系型数据库管理系统,其性能优化一直是数据库管理中的重要议题。本文档主要关注于SQL语句层面的优化策略,旨在通过改善SQL语句的...
本文将深入探讨MySQL索引的基础知识,帮助你理解如何有效地利用索引来提升查询速度。 首先,我们需要了解索引是什么。在数据库中,索引就像书籍的目录,它提供了一种快速定位数据的方法,避免了全表扫描。MySQL支持...
MySQL数据库知识整理,增删改查基础,以及约束,多表,联结
2020年最新Java面试题整理,全网最全一份,包含各个技术栈,Java基础,Java集合,多线程,...MySQL,Nginx,rabbitmq,Redis,Tomcat,zookeeper,设计模式,数据结构,算法,分布式,限流,降级,cap原理等等知识点
本文将深入探讨在"JAVA核心知识点整理"中涉及的关键概念和技术。 一、Java基础 Java的基础知识包括语法、面向对象特性(封装、继承、多态)、异常处理、输入/输出流以及集合框架。了解基本类型、类、接口、包的概念...
MySQL知识整理,包含一些常见面试题和基本知识点。对自己一年的学习做个总结,不喜勿喷,欢迎交流。本人小白一枚,只算入门级别。留下第一份足迹
本文将深入探讨MySQL的核心概念、安装与配置、数据类型、SQL语句、索引优化、存储引擎、事务处理以及备份与恢复等关键知识点。 一、MySQL核心概念 MySQL是一个开源、免费的数据库系统,它采用SQL(结构化查询语言)...
【数据库原理及应用MySQL-触发器部分的知识点整理】 触发器是MySQL数据库中一个重要的特性,主要用于维护数据的完整性和一致性。它是一种特殊类型的存储过程,由特定的数据库事件(如INSERT、UPDATE或DELETE)自动...
文件《JAVA核心知识点整理.pdf》作为Java程序员面试准备资料,提供了一个全面的Java知识点回顾,涵盖JVM运行机制、多线程编程、集合框架、IO/NIO、类加载机制等内容。这些知识点对于应聘者理解Java技术栈、提升编程...
以下是对各个知识点的详细解释: 1. **我们可以且应该优化什么?** - 优化的目标包括:查询性能、资源利用率(CPU、内存、磁盘I/O)、并发处理能力以及数据的可靠性与一致性。 2. **优化硬件** - 选择适合数据库...
对整个mysql的知识点的归纳,非常适合初学者的整体学习和思路整理参考
MySQL书籍(21本)目录知识点(思维导图加图).rar 根据如下MySQL书籍收集整理: 2004年《MySQL完全手册》 2006年《MySQL 5 权威指南-(第3版)》 2007年《PHP与MySQL 5程序设计(第2版)》 2009年《MySQL必知必会》 ...
Java面试知识点整理总结涵盖了多个关键领域,这对于求职者或希望提升技术能力的Java开发者来说是宝贵的资源。以下是对这些主题的详细阐述: 1. **Java基础**:这是学习任何编程语言的基础,包括变量、数据类型、...
以下是一些关键的知识点和小技巧,帮助你在面试中脱颖而出: 1. **基础知识牢固**:无论你是应聘编程、网络、数据库还是其他IT职位,对基础概念的理解必须扎实。例如,对于程序员来说,了解数据结构(如数组、链表...
非常详细的数据库知识点整理,主要涵盖:数据库基础知识、DDL、DML、DQL、DCL、事务讲解、Mysql、JDBC、Java操作Mysql、数据库连接池、Redis型非关系数据库、Java使用Jedis操作Redis数据库
学习尚硅谷视频整理的文档 Spring Boot 1 1 Spring Boot入门 4 1.1 简介 4 1.2 微服务(martin fowler发表了一篇文章) 5 1.3 环境约束 7 1.4 第一个Spring Boot项目(jar):HelloWorld 8 1.5 入门案例详解 11 ...
4.2.1 B树数据结构4.2.2 B+树数据结构,以及为什么选择B+树4.2.3 一个错误的观点:B树和B+树的区别之一为B树的非叶子节点存储数据4.3 简单猜想:为什么索引中每个节点在内存中的地址是随机的5 MySQL索引的体现形式...
3. **其他MySQL知识点** - **存储过程和触发器**:存储过程可以封装复杂的业务逻辑,提高代码复用,而触发器则可以在特定事件(如INSERT、UPDATE或DELETE)发生时自动执行某些操作。 - **视图**:视图是虚拟表,...
MySQL高级面试题整理及答案.md 是一个包含MySQL高级面试题及其答案的Markdown文档。该资源旨在帮助开发者更好地了解MySQL的高级特性和应用,提高面试通过率。 内容概要: MySQL高级面试题:该资源包含了MySQL的...