mysql 存储引擎

    xiaoxiao2025-01-24  5

    存储引擎:

    一种用来存储mysql中对象的一种特定的结构(文件结构),处于mysql的最底层,直接存储数据,这样导致上层数据的操作,依赖于存储引擎的选择,比如事务。

    查看当前存储引擎:show engines \G

    Innodb

    推荐使用存储引擎,更加注重数据的完整性和安全性,mysql版本>=5.5 提供事务、行级锁、外键约束的存储引擎

    <

    存储格式 数据,索引集中存储,存储于同一个表空间文件中。 数据(记录行) 索引(一种检索机制,也需要一定的空间) 创建表后会在对应数据库名目录下生成一个name.frm表结构文件,默认表的数据都在一个空间文件中 nmdata 通过配置,达到每张innodb表,一个表空间文件(name.ibd)的目的:

    set global innodb_file_per_table = 1;

    数据按照主键顺序存储,插入时做排序工作,效率低。 支持事务、外键约束、维护数据完整性。 并发性处理:擅长处理并发的。 行级锁定: row-level locking,实现了行级锁定,在一定情况下,可以选择行级锁来提升并发性。也支持表级锁定,innodb根据操作选择。 多版本并发控制, MVCC,效果达到无阻塞读操作。相当于在更新操作时候会生成一个副本,不影响对记录的读操作。


    Myisam

    version<= 5.5 MySQL默认的存储引擎。 ISAM:Indexed Sequential Access Method(索引顺序存取方法)的缩写,是一种文件系统。 擅长与处理 高速读与写。

    <

    存储方式 数据索引分别存储于不同的文件中。(name.frm name.MYD name.MYI) 数据的存储顺序为插入顺序,插入速度快,空间占用量小。 功能: 全文索引支持。(>=5.6 innodb 支持) 数据的压缩存储。

    //使用mysql/bin目录下提供的可执行文件,在数据目录下执行 //压缩(减少磁盘空间,io开销) myisampack tal_name //压缩后需要重新建立索引 myisamchk -rq tbl_name //压缩后为只读表,如果需要更新,则需要解压后更新,再压缩(重新索引) myisamchk -unpack tbl_name

    并发性: 仅仅支持表级锁定。 支持 并发插入。写操作中的插入操作,不会阻塞读操作(其他操作)


    Archive

    存档型 仅提供 插入和查询操作。非常高效 无阻塞的插入和查询。


    Memory

    内存型 数据存储于内存中,存储引擎。缓存型存储引擎


    当客户端操作表(记录)时,为了保证操作的隔离性(多个客户端操作不能互相影响),通过加锁来处理。 操作方面:

    读锁:读操作时增加的锁,也叫共享锁,S-lock。特征是 阻塞其他客户端的写操作,不阻塞读操作。 写锁:写操作时增加的锁,也叫独占锁或排他锁,X-lock。特征,阻塞其他客户端的读,写操作。

    锁定粒度(范围): 行级:提升并发性,锁本身开销大 表级:不利于并发性,锁本身开销小。
    转载请注明原文地址: https://ju.6miu.com/read-1295743.html
    最新回复(0)