zoukankan      html  css  js  c++  java
  • mysql存储引擎

    存储引擎概念。
    MySQL数据库中使用各种不同的技术存储数据到文件系统中,每一种技术都使用不同的存储机制、
    索引技巧,锁定水平并最终提供不同的功能和能力,这些不同的技术以及配套的功能在MySQL中称为
    存储引擎。
    存储引擎就是MySQL将数据存储在文件系统中的存储方式或者存储格式。
    目前MySQL常用的两种存储引擎:MylSAM、InnoDB MySQL存储引擎是MySQL数据库服务器中
    的组件,负责为数据库执行实际的数据l/O操作,使用特殊存储引擎的主要优点之一在于仅需提供特殊应
    用所需的特性,数据库中的系统开销较小,具有更有效和更高的数据库性能。
    MySQL系统中,存储引擎处于文件系统之上,在数据保存到数据文件之前会传输到存储引擎,之后
    按照各个存储引擎的存储格式进行文件的物理存储。
    MySQL日志种类:
    >错误日志:程序运行,启动类的故障。
    >二进制日志:保存数据库变更语句>中继日志:缓存二进制日志数据。
    >查询日志:记录查询语句的。
    >慢查询日志:记录超时的查询语句。
    >事务日志:
    一、MyISAM存储引擎。
    1、MyISAM概述。
    MyISAM存储引擎是MySQl关系数据库系统5.5版本之前默认的存储引擎,前身是ISAM。
    ISAM是一个定义明确且经历时间考验的数据表格管理方法,在设计之时就考虑到数据库被查询的次数
    要远大于更新的次数。
    I5AM的特点:ISAM执行读取操作的速度很快,而且占用不大量的内存和存储资源,它不支持事务处理,
    不能够容错。
    MyiSAM管理非事务表,是ISAM的扩展格式,提供ISAM里所没有的索引和字段管理的大量功能。
    MylSAM.使用一种表锁定的机制,以优化多个并发的读写操作。MylSAM提供高速存储和检索,以及全
    文搜素能力,受到web开发的青睐。
    2、MyISAM的特点。
    (1)不支持事务。
    (2)表级锁定形式,数据在更新时锁定整个表。
    (3)数据库在读写过程中相互阻塞(会在数据写入的过程中阻塞用户数据的读取,也会在数据读取的过程中
    阻塞用户的数据写入)。
    (4)可以通过key buffer size来设置缓存索引,提高访问性能,减少磁盘I0的压力,但缓存只会缓存索引文
    件,不会缓存数据。
    (5)采用MyISAM存储引擎数据单独写入或读取,速度过程较快而且占用资源相对较少。
    (6)MyISAM存储引擎不支持外键约束,只支持全文索引(7)每个MMSAM在磁盘上存储成三个文件,每
    一个文件的名字以表的名字开始,扩展名指出文件类型。
    .frm文件存储表定义
    MYD文件存储数据(MYData)
    .MYI文件存储索引文件(MYIndex)
    3、MyISAM使用的生产场景
    (1)公司业务不需要事务支持。
    (2)一般单方读取数据比较多的业务,或单方面写入数据比较多的业务,如:www.blog,图片信息数据库,
    用户数据库,商品库等业务,MyISAM存储引擎数据读写都比较频繁的场景不适合。
    (3)对数据业务一致性要求不是非常高的业务。
    (4)使用读写并发访问相对较低的业务
    (5)数据修改相对较少的业务。
    (6)服务器硬件资源相对比较差
    二、lnnoDB介绍。
    1、lnnoDB的特点
    (1)支持事务:支持4个事务隔离级别。
    (2)行级锁定,但是全表扫描仍然会是表级锁定
    (3)读写阻塞与事务隔离级别相关。
    (4)具有非常高效的缓存特性:能缓存索引,也能缓存数据。
    (5)表与主键以簇的方式存储。
    (6)支持分区、表空间,类似oracle敬据库。
    (7)支持处键约束,5.5以前不支持全文索引,5.5版本以后支持全文索引
    (8)对硬件资源要求比较高
    2、lnnoDB使用的生产场景。
    (1)业务需要事务的支持
    (2)行级锁定对高并发有很好的适应能力,但需要确保查询是通过索引来完成。
    (3)业务数据更新较为频繁的场景,如:论坛,微博
    (4)业务数据一致性要求较高,如:银行业务。
    (5)硬件设备内存较大,利用lnnoDB.较好的缓存能力来提高内存利用率,减少磁盘I0的压力。
    三、企业选择存储引擎的依据。
    1、需要考虑每个存储引掌提供了哪些不同的核心功能及应用场景。
    2、支持的字段和数据类型,所有引擎都支持通用的数据类型,但不是所有引擎都支持其他的字段类型,如二进制对象。
    3、锁定类型:不同的存储引擎支持不同级别的锁定
    表锁定:MylSAM、MEMORY
    行锁定:lnnoDB。
    页锁定:BDB
    4、索引的支持。
    建立索引在搜索和恢复数据库中的数据的时候能显著提高性能
    不同的存储引掌提供不同的制作索引的技术
    有些存储引擎根本不支持索引
    5、事务处理的支持
    事务处理功能通过提供在向表中更新和插入信息期间的高可靠性
    可根据企业业务是否要支持事务选择存储引擎

    查看数据库可配置的存储引擎
    show engines G

    查看表正在使用的存储引擎
    (1)show table status from 库名 where name='表名'G;
    (2)show create table 表名;

    配置存储引擎为所选择的类型
    (1)alter table 表名 engine=引擎;
    (2)修改/etc/my.cnf的default-storage-engine为引擎
    (3)create table 建表时使用engine=引擎
    (4)mysql_convert_table_format --user=root --password=密码 --sock=文件路径 mysql.sock --engine=引擎 库名 表名;


  • 相关阅读:
    THINKPHP导入全部post参数
    thinkphp 表单一些
    随机唯一不重复
    TP关联模型
    PHP函数之类
    MSSQLid清零
    httpwebrequest异步参考
    反射
    UrlOper
    工作周记
  • 原文地址:https://www.cnblogs.com/lyqlyqlyq/p/11679762.html
Copyright © 2011-2022 走看看