zoukankan      html  css  js  c++  java
  • mysql数据库之存储引擎

                                                                mysql存储引擎概述                                                

    什么是存储引擎?                                                              

    MYSQL中的数据用各不相同的技术存储在文件(或者内存)中,这些技术中的每一种技术都使用不同的存储机制,索引技巧,锁定水平并且最终提供广泛的不同的功能和能力.通过选择不同的技术,你能狗获得额外的速度或者功能,从而改善你的应用的整个功能.

    内存存储引擎能够在内存中存储所有的表格数据,或者,你需要一个支持事物处理的数据库(以确保事物处理不成功是数据的回退能力),这些不同的而技术和以及配套的相关功能在mysql中被称为存储引擎(也称作表类型).

    存储引擎是MYSQL有别于其他数据库管理系统的最大特色,比如他的兄弟Oracle中就没有专门的存储引擎的概念,仅仅有OLTP和OLAP模式的区分,参数上的不同.

    我们知道数据存在表中,我们可以将表理解为由行和列组成的表格,每个表格是一个数据,表示在存储数据时,还要组织数据的存储结构,这些数据的组织结构就是有存储引擎决定的,即存储引擎的作用就是规定了数据存储的存储结构

    简单来说: 存储引擎就是数据的存储结构,有实际业务决定.

    mysql支持哪些存储引擎?                                               

    mysql支持的存储引擎包括:
    FEDERATED
    MRG_MYISAM
    MYISAM
    BLACKHOLE
    CSV
    MEMORY
    ARCHIVE
    InnoDB
    PERFORMANCE_SCHEMA
    
    其中InnoDB提供事务安全表,其它存储引擎都是非事务安全表
    存储引擎

                                                             各种存储引擎的特性                                                  

    最常见的两种存储引擎是MYISAMInnoDB

    FEDERATED
    federated存储引擎不存放数据,提供了从多个物理机上连接不同的mysql服务器创建一个逻辑数据库的能力,类似oracle的透明网关,适用于分布式或数据市场的场景.
    
    MYISAM
    
    MYISAM是mysql官方提供默认的存储引擎,其特点是不支持事务,外键,操作速度,访问快,但是表级别的锁定限制了它在读写负载方面的性能,因此它经常应用于只读或者已读为主的数据场景.注意:不缓存数据文件,只缓存索引文件
    
    BLACKHOLE
    黑洞存储引擎,类似于 Unix 的 /dev/null,Archive 只接收但却并不保存数据。对这种引擎的表的查询常常返回一个空集。这种表可以应用于 DML 语句需要发送到从服务器,但主服务器并不会保留这种数据的备份的主从配置中。
    
    CSV
    它的表真的是以逗号分隔的文本文件。CSV 表允许你以 CSV 格式导入导出数据,以相同的读和写的格式和脚本和应用交互数据。由于 CSV 表没有索引,你最好是在普通操作中将数据放在 InnoDB 表里,只有在导入或导出阶段使用一下 CSV 表。
    
    Memory
    在内存中存储所有数据,应用于对非关键数据由快速查找的场景。Memory类型的表访问数据非常快,因为它的数据是存放在内存中的,并且默认使用HASH索引,但是一旦服务关闭,表中的数据就会丢失
    
    InnoDB
    MySql 5.6 版本默认的存储引擎。InnoDB 是一个事务安全的存储引擎,它具备提交、回滚以及崩溃恢复的功能以保护用户数据。主要面向OLTP方面的应用,其特点是行锁设置、支持外键,并支持类似于Oracle的非锁定读,即默认情况下读不产生锁,
    
    NDB
    NDB存储引擎是一个集群存储引擎,类似于Oracle的RAC,但它是Share Nothing的架构,因此能提供更高级别的高可用性和可扩展性。NDB的特点是数据全部放在内存中,因此通过主键查找非常快。
    关于NDB,有一个问题需要注意,它的连接(join)操作是在MySQL数据库层完成,不是在存储引擎层完成,这意味着,复杂的join操作需要巨大的网络开销,查询速度会很慢。
    
    Archive
    正如其名称所示,Archive非常适合存储归档数据,如日志信息。它只支持INSERT和SELECT操作,其设计的主要目的是提供高速的插入和压缩功能。
    
    Memory
    Memory存储引擎(之前称为Heap)将表中数据存放在内存中,如果数据库重启或崩溃,数据丢失,因此它非常适合存储临时数据。
    各种存储引擎的特性介绍

                                                          存储引擎在mysql中的使用                                            

    查看当前的默认存储引擎:
    
    mysql> show variables like "default_storage_engine";
    
    查询当前数据库支持的存储引擎
    
    mysql> show engines G;

    指定存储引擎建表                                                          

    在建表时指定                        

    mysql> create table ai(id bigint(12),name varchar(200)) ENGINE=MyISAM; 
    
    mysql> create table country(id int(4),cname varchar(50)) ENGINE=InnoDB;
    
    也可以使用alter table语句,修改一个已经存在的表的存储引擎。
    
    mysql> alter table ai engine = innodb;

    在配置文件中指定                 

    my.ini文件
    [mysqld]
    default-storage-engine=INNODB
  • 相关阅读:
    HashMap的put方法
    死锁相关
    AVL树
    xss漏洞
    hash
    古典密码学教学
    python | 实现控制多台机器的脚本
    python | 端口扫描器(多线程)
    每日一洞 | 细说渗透江湖之出荆棘入深林
    每日一洞 | 细说渗透江湖之柳暗花明又一村
  • 原文地址:https://www.cnblogs.com/tianshuai1/p/11006409.html
Copyright © 2011-2022 走看看