InnoDB:
 
InnoDB 引擎是MySQL数据库的另一个重要的存储引擎、被包含在所有的二进制安装包里面、和其它的存储引擎相比、InnoDB引擎的优点是支持兼容ACID的事物、以及参数完整性(有外键)等。MySQL5.5.5以后默认的存储引擎都是InnoDB引擎;
 
特性:
1:支持事务(要么全成功、要么全失败);
2:行级锁定(更新数据时一般指锁定当前行):通过索引实现、全表扫描忍让时表锁、注意间隙所的影响;
3:读写阻塞与事务的隔离级别相关;
4:具有非常高的缓存特性(既能缓存索引、也能缓存数据);
5:这个表和主键以组(Cluster)的方式存储、组成一颗平衡树;
6:所有的辅助索引(secondary indexes)都会保存主键信息;
7:支持分区、表空间类似与oracle 数据库;
8:支持外键约束、不支持全文检索(5.5.5之前的MyISAM支持全文检索、5.5.5之后就不在支持);
9:相对MyISAM而言、对硬件的要求比较高
 
应用场景:
1:需要支持事务的业务;
2:行级锁定对于高并发有很好的适应能力、但是需要保证查询是通过索引完成的;
3:数据读写都很频繁的环境(如:BBS、微博等);
4:对数据一致性要求比较高的业务(如充值、银行转转);
5:硬件设备内存较大、可以很好的利用InnoDB较好的缓存能里来提高内存利用率、减少IO的开销;
 
调优精要:
1:主键尽可能的小、避免给辅助索引(secondary indexes)带来过大的空间负担;
2:避免全表扫描(会使用表锁);
3:尽可能的缓存所有的索引和数据、提高响应速度、减少磁盘IO消耗;
4:在大批量小插入的时候、尽量自己控制事务、而不使用autocommit自动提交;
5:合理设置Innodb_flush_log_ad_trx_commit 参数值、不要过度追求安全性;
如果值为0、log buffer每秒就会被刷写日志文件进入磁盘、提交事务的时候不做任何操作;
6:避免主键更新(主键更新会带来大量的数据移动);
 
存储:
InnoDB表由共享表空间文件(ibdata1)、独占表空间文件(ibd)、表结构文件(.frm)、以及日志文件(redo)组成;
独占表空间文件:
若将innodb_file_per_table 设置为 on、则系统将为每一个表单独生成一个 table_name.ibd 的文件、在此文件中、存储与该表相关的数据、索引、表的内容、数据字典等信息;
共享表空间文件:
在InnoDB存储引擎中、默认表空间文件是 ibdata1 (主要存储的是共享表空间数据),初始化为10M,可以扩展;共享表空间的大小
可以修改、使用 nnodb_data_file_path=ibdata1:370M;ibdata2:50M:autoextend 修改;使用共享表空间存储方式时,Innodb的所有数据保存在一个单独的表空间里面,而这个表空间可以由很多个文件组成,一个表可以跨多个文件存在,所以其大小限制不再是文件大小的限制,而是其自身的限制。从Innodb的官方文档中可以看到,其表空间的最大限制为64TB,也就是说,Innodb的单表限制基本上也在64TB左右了,当然这个大小是包括这个表的所有索引等其他相关数据。而在使用单独表空间存储方式时,每个表的数据以一个单独的文件来存放,这个时候的单表限制,又变成文件系统的大小限制了。
以下即为不同平台下,单独表空间文件最大限度。
Operating System --- File-size Limit
Win 32 w/FAF/FAT32 --- 2GB/4GB
Win 32 w/NTFS --- 2TB(possibly larger)
Linux 2.4+ (using ext3 file system) --- 4TB
Solaris 9/10 --- 16TB
MacOS X w/ HFS+ --- 2TB
NetWare w/NSS file system --- 8TB
 

最新文章

  1. VC++ 应用程序无法正常启动0xc0150002
  2. javascript 设计模式-----策略模式
  3. 关于scrollbar-face-color只支持ie的解决办法!
  4. RESTFUL接口
  5. string 常用 方法
  6. centos 安装php-fpm , nginx二级域名配置 ,但为什么必须要 域名提供商 哪里解析新的二级域名一下 才能用呢?
  7. perl 回调必须是函数引用
  8. Python集成开发环境(Eclipse+Pydev)
  9. C#之再议数组和集合
  10. Device "/dev/sdg" is not a partition【再续】
  11. Java 获取字符串Hash值
  12. 简述ADO.NET命名空间
  13. SpringBoot 配置 Servlet、Filter、Listener
  14. BZOJ 4833: [Lydsy1704月赛]最小公倍佩尔数(数论 + 最值反演)
  15. springboot使用@Schednled 注解实现定时任务
  16. java根据URL获取HTML内容
  17. win7 配置Windows Update 失败,还原更改,无法进入系统
  18. LINUX-iostat命令讲解
  19. hbase 学习(十六)系统架构图
  20. el表达式便利map集合

热门文章

  1. MySQL存储过程中实现执行动态SQL语句
  2. web传输过程中的gzip压缩
  3. Springboot添加定时任务
  4. java面向对象编程(七)--四大特征之多态
  5. c++ 第二章知识梳理
  6. 利用arcgis和envi对卫星图像按城市进行拼接,分割
  7. nodejs之mock与跨域代理的三两事
  8. Python3.7和数据库MySQL交互(二)SQLyog安装教程
  9. Java中对Array数组的常用操作
  10. FileUrl