zoukankan      html  css  js  c++  java
  • InnoDB 存储引擎的特点及优化方法

    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
     

  • 相关阅读:
    warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
    Windows10+CLion+OpenCV4.5.2开发环境搭建
    Android解决部分机型WebView播放视频全屏按钮灰色无法点击、点击全屏白屏无法播放等问题
    MediaCodec.configure Picture Width(1080) or Height(2163) invalid, should N*2
    tesseract
    Caer -- a friendly API wrapper for OpenCV
    Integrating OpenCV python tool into one SKlearn MNIST example for supporting prediction
    Integrating Hub with one sklearn mnist example
    What is WSGI (Web Server Gateway Interface)?
    Hub --- 机器学习燃料(数据)的仓库
  • 原文地址:https://www.cnblogs.com/laowenBlog/p/8405634.html
Copyright © 2011-2022 走看看