mysql引擎和事务
对于应用程序和用户来说,同样一张表的数据无论用什么引擎来存储,看到的数据都是一样的,只是不同的引擎在功能、占用空间大小、读取性能等方面可能有所差别。
mysql最常用的存储引擎为Innodb、MyISAM和全文索引
5.5.5以前默认存储引擎为MyISAM,5.5.5及之后默认存储引擎为Innodb
mysql> show engines \G查看当前数据库系统支持的引擎
mysql5.5支持事务的引擎:Innodb/ndb(集群的引擎)
对于MyISAM来说,每一个表对应于磁盘上的三个文件,这三个文件名称相同,扩展名不同。
.frm文件保存表的定义(是服务器而不是MyISAM引擎的一部分),.MYD保存表的数据,.MYI是表的索引文件(可参考mysql的系统库mysql下的文件)
特点:
1.不支持事务
2.表级锁定(更新时锁定整个表),锁定的成本小,但大大降低了并发性能
3.读写互相阻塞,不仅会在写入的时候阻塞读取,还会在读取的时候阻塞写入,但是读不会阻塞另外的读
4.只会缓存索引不能缓冲数据,可以通过key_buffer_size缓存索引,减少磁盘IO,但是只会缓存索引不会缓存数据
5.读取速度较快,占用资源相对少(功能相对弱,锁的粒度大)
6.不支持外键约束,但支持全文索引
7.mysql5.5.5默认的存储引擎
适用的生产场景:单一对数据库的操作(纯读或者纯写)可以使用
1.不需要事务支持的业务(例如转账、充值就不行)
2.一般为读多或者写多的网站应用,读写都频繁的场景不适合
3.读写并发相对较低的业务(纯读纯写高并发也可以)
4.数据修改相对较少的业务
5.以读为主的业务,例如www、blog、图片信息数据库
6.对数据一致性要求不很高的业务
7.硬件资源相对较差的机器
调优精要:
1.设置合适的索引
2.调整读写优先级,根据实际需要确保重要的操作更优先执行
3.启用延迟插入改善大批量写入性能(降低写入频率)
4.尽量顺序操作,让insert数据都写入到尾部,减少阻塞
5.分解大的时间长的操作,降低单个操作的阻塞时间
6.降低并发数,某些高并发场景通过应用进行排队队列机制
7.对于相对静态(更改不频繁)的数据库数据,充分利用query cache或者mamcached缓存服务极大的提高访问效率
8.count只有在全表扫描的时候高效,带有其他条件的count都需要进行实际的数据访问
9.可以把主从同步的主库使用Innodb,从库使用MyISAM引擎(不推荐)
Innodb
特点:
1.支持事务
2.行级锁定(更新时一般锁定当前行),通过索引实现,如果进行全表扫描仍然会锁全表与MyISAM相同,注意间隙锁的影响
3.读写阻塞与事务隔离级别相关
4.具有高效的缓存特性,能缓存索引,也能缓存数据
5.整个表和主键以cluster方式存储,组成一棵平衡树
6.所有secondary index都会保存逐渐信息
7.支持分区和表空间,类似oracle数据库
8.支持外键约束,5.5以前不支持全文索引,后续支持
9.与MyISAM相比对硬件资源要求相对较高
适用场景:
1.需要事务支持的业务
2.行级锁定对高并发有很好的适应能力,但需要确保查询通过索引完成
3.数据读写及更新都较为频繁的场景,如bbs、sns、微博、微信等
4.对数据一致性要求较高的业务,例如充值转账
5.硬件设备内存大,可以利用Innodb较好的缓存能力来提高内存利用率,尽可能减少磁盘IO
6.与MyISAM引擎相比,Innodb引擎更消耗资源,速度没有MyISAM快
调优精要:
1.主键尽可能小,避免给secondary index带来过大压力
2.避免全表扫描,否则会使用表锁
3.尽可能缓存所有的索引和数据,提高响应速度,减少磁盘IO消耗
4.在大批量小插入的时候,尽量自己控制事务,而不要使用autocommit
4.合理设置innodb_flush_log_at_trx_commit,不要过度追求安全性
5.避免主键更新,这会带来大量的数据移动
事务:逻辑上的一组sql语句操作,这组sql语句执行时要么全部成功要么全部失败
事务的四大特性ACID
原子性(atomicity):事务是一个不可分割的单位,一个事务中的所有sql操作要么全部成功要么全部失败
一致性(consistency):事务发生前和发生后,事务的完整性必须保持一致
隔离性(isolation):当并发访问数据库时,一个正在执行的事务在执行完毕前,对于其他会话是不可见的,多个并发事务之间的数据是互相隔离的(mysqldump时的参数--single-transaction)
持久性(durability):一个事务一旦被提交,它对数据库中的数据改变就是永久性的,如果出了错误,事务不允许撤销,只能通过“补偿性事务”
mysql数据库的事务默认是自动提交的。如果想多条sql在一个事务中执行,则需要使用事务进行处理。如果开启一个事务没有提交,mysql会自动回滚事务,或者手动使用rollback回滚。
start transaction开启事务
rollback回滚事务
commit提交事务
mysql> show variables like '%commit%';结果为on或者off(默认为on)
表创建后修改引擎的方法
1.mysql语句修改
mysql> alter table test2 engine=MyISAM;
2.使用sed对备份内容进行引擎替换,即用mysqldump备份,使用sed对引擎做替换,再导入替换后的备份语句
3.linux命令mysql_convert_table_format修改
转载于:https://www.cnblogs.com/Forever77/p/10051278.html
mysql引擎和事务相关推荐
- MySQL · 引擎特性 · InnoDB 事务子系统介绍
前言 在前面几期关于InnoDB Redo和Undo实现的铺垫后,本节我们从上层的角度来阐述InnoDB的事务子系统是如何实现的,涉及的内容包括:InnoDB的事务相关模块,如何实现MVCC及ACID ...
- mysql 事务 引擎_mysql引擎和事务
对于应用程序和用户来说,同样一张表的数据无论用什么引擎来存储,看到的数据都是一样的,只是不同的引擎在功能.占用空间大小.读取性能等方面可能有所差别. mysql最常用的存储引擎为Innodb.MyIS ...
- mysql索引与事务笔记_《MySQL技术内幕:InnoDB存储引擎》读书笔记五-锁、索引及事务...
1.锁mysql 1)锁是数据库系统区别于文件系统的一个关键特性,数据库使用锁是为了支持对共享资源进行并发访问,提供数据的完整性和一致性.算法 2)每一种数据库实现锁的方式都不一样.sql 共享锁:容 ...
- 看完就懂——MySQL索引、事务与存储引擎
目录 前言 一.索引(index) 1.1 索引的概念 1.2 索引的作用 1.3 索引的优缺点 1.4 索引的分类 1.5 创建索引的原则依据 1.6 创建索引 1.6.1 普通索引 1.6.2 唯 ...
- 互联网行业中最常用的数据库——MySQL 索引、事务与存储引擎
MySQL 索引.事务与存储引擎 一.MySQL 索引 1.1 索引的概念 1.2 索引的作用及缺点 1.2.1 优点 1.2.2 缺点 1.3 创建索引的原则依据 1.4 索引的分类和创建 1.4. ...
- MySQL索引、事务与引擎基础详解,理论加实例
目录 一.索引 1.1普通索引 1.2唯一性索引 1.3主键索引 1.4组合索引 1.5全文索引 1.6索引的查看 1.7索引的删除 二.事务 2.1事务的ACID特点 2.2事务控制语句 2.3事务 ...
- MySQL的存储引擎、事务和锁机制
1.什么存储引擎 数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建.查询.更新和删除数据.不同的存储引擎提供不同的存储机制.索引技巧,锁定水平等功能,使用不同的存储引 ...
- MySQL 索引、事务与存储引擎
目录 一.MySQL 索引 1.索引的概念 2.索引的作用 3.索引的副作用 4.创建索引的原则依据 5.索引的分类和创建 1.普通索引 2.唯一索引 3.主键索引 4.组合索引(单列索引与多列索引) ...
- MySQL · 引擎特性 · InnoDB 事务系统
MySQL · 引擎特性 · InnoDB 事务系统 前言 关系型数据库的事务机制因其有原子性,一致性等优秀特性深受开发者喜爱,类似的思想已经被应用到很多其他系统上,例如文件系统等.本文主要介绍Inn ...
最新文章
- 参数匹配顺序——Python学习之参数(三)
- C# 中的char 和 byte
- 在领域驱动的设计,贫乏的领域模型,代码生成,依赖项注入等方面……
- 印象笔记打开错误_只会用手机自带便签?这三款笔记软件分分钟秒杀
- linux kprobe rootkit学习
- MFC 时间记时器, string 转化为CString
- word文字校对工具_如何在Word中使用校对面板
- P3853 路标设置
- 二十五.决策树之CART决策树的原理和sklearn实现
- python实现文本翻译
- 特殊字符保存到SQL数据库的问题
- Jenkins卸载方法
- Windows 搭建 Nexus3 私服
- I.MX8M mini物联网开发板框架及屏幕接口详解
- 计算机网络知识点全面总结(一篇全懂)
- Input上传多个文件
- 色深和色度采样,视频编解码
- 云里黑白21——win10 企业版更新系统后开始菜单左键点不出来
- sqlmap问题及解决办法
- 张家窝幼儿英语辅导班_英语启蒙的正确的打开方式
热门文章
- 小米 信号测试软件,iQOO和小米9信号之争:多方位网络测试,最终由谁胜出?
- git linux 部署网站,centos 搭建git自动部署web应用
- 20155229《网络对抗技术》Exp9:Web安全基础
- C++函数返回局部变量
- linux-基本开发环境搭建
- 大数据,并非一蹴而就
- php 魔术方法 多继承,PHP通过魔术方法实现多继承与重载
- 里面的自带的字典在哪里_影视剪辑高清素材哪里找?4种方法教你,适合新手入门...
- arcmap常见错误及常用操作(待补充)
- keras 微调整模型_如何围绕微服务调整团队