存储引擎介绍Mysql中的数据用各种不同的技术存储在文件中,这些技术中的每一种技术都使用不同的存储机制,索引技巧,锁定水平。并且最终提供广泛的不同的功能和能力。通过选则不同的技术,能够获得额外的速度或者功能,从而改善应用的整体功能,这些不同的技术以及配套的相关功能在mysql中被称作存储引擎

在熟悉存储引擎之前,先来了解mysql的体系结构:1)Connectors:连接组件,相当于驱动,针对不同的语言会有不同的驱动,例如针对PHP要安装php驱动。驱动要到mysql官网上去找,衔接mysql与开发语言的桥梁

2)Connection  pool :连接池组件,mysql为了加大前台请求进程与后台服务的连接,相当于客服,为了用户体验不止一个组件

3)Enterprise Management Service&Utilities:管理服务和控制组件,

4)SQL Interface:SQL接口组件,支持服务进行各种增,删,改,查操作

5)Parser:查询分析器组件,支持进行各种条件查询,比如升降序查询

6)Optimizer:优化器组件

7)Caches&Buffers:缓存组件

8)Pluggable Storage Engines:插件式存储引擎,支持热插拔(即插即用)

9)File System:文件系统

10)File&Logs:存储文件和日志

Mysql系统中,存储引擎处于文件系统之上,在数据保存到数据文件之前会先传输到存储引擎,然后按照各个存储引擎的存储格式进行数据存储。使用这种存储引擎的优点在于,仅仅需要提供特殊应用所需的特性即可;数据库中的系统开销最小;具有更有效和更高效的数据库性能

MyISAM的特点及介绍MyISAM   MYSQL5.5以前支持的默认存储引擎

1)查询频率较高的场合:商城网站

2)不支持事务

3)表锁定   读取与写入互阻塞

InnoDB特点及介绍InnoDB存储引擎不同于MyISAM存储引擎,InnoDB  mysql5.7默认支持存储引擎

查看数据库可配置的存储引擎类型使用show engines;可以查看Mysql默认使用的存储引擎,以及系统支持的其他存储引擎mysql> show engines;

+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+

| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |

+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+

| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |

|InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |

| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |

| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |

| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |

| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |

| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |

| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |

+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+

8 rows in set (0.01 sec)

可看到默认使用的存储引擎为InnoDB

查看表正在使用的存储引擎1)使用show table status命令可以查看表正在使用的存储引擎,

show table status from 库名where name='表名';

mysql> show table status from abc where name='info';

+------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+

| Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time         | Update_time | Check_time | Collation       | Checksum | Create_options | Comment |

+------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+

| info |InnoDB |      10 | Compact    |    1 |          16384 |       16384 |               0 |            0 |  10485760 |           NULL | 2018-09-07 14:33:07 | NULL        | NULL       | utf8_general_ci |     NULL |                |         |

+------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+

1 row in set (0.00 sec)

可看到info表使用的存储引擎为InnoDB

2)使用show create命令也可以查看表正在使用的存储引擎

use 库名;     //先进入数据库

show create table 表名;

mysql> use abc;

Database changed

mysql> show create table info;

+-------+------------------------------------------------------------------------------------------------------------------------+

| Table | Create Table                                                                                                           |

+-------+------------------------------------------------------------------------------------------------------------------------+

| info  | CREATE TABLE `info` (

`id` int(11) DEFAULT NULL,

`name` char(18) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

+-------+------------------------------------------------------------------------------------------------------------------------+

1 row in set (0.00 sec)

配置存储引擎为所需要的类型

(1)使用alter table命令修改alter table 表名 engine=存储引擎

mysql> alter table info engine=MyISAM;

Query OK, 1 row affected (0.02 sec)

Records: 1  Duplicates: 0  Warnings: 0

mysql> show create table info;

+-------+------------------------------------------------------------------------------------------------------------------------+

| Table | Create Table                                                                                                           |

+-------+------------------------------------------------------------------------------------------------------------------------+

| info  | CREATE TABLE `info` (

`id` int(11) DEFAULT NULL,

`name` char(18) DEFAULT NULL

) ENGINE=MyISAMDEFAULT CHARSET=utf8 |

+-------+------------------------------------------------------------------------------------------------------------------------+

1 row in set (0.00 sec)

(2)修改Mysql的配置文件my.cnf,可以指定default-storage-engine选项设置默认的存储引擎vim /etc/my.cnf

//省略内容

[mysqld]

default-storage-engine=MyISAM

//省略内容

这里指定默认存储引擎是MyISAM,需要重新启动Mysql服务器,

以后创建的新表存储引擎就会改变,但是之前创建的表的存储引擎不会改变。

mysql> create table xinxi(id int ,score decimal(5,2));

Query OK, 0 rows affected (0.03 sec)

mysql> show create table xinxi;

+-------+------------------------------------------------------------------------------------------------------------------------------+

| Table | Create Table                                                                                                                 |

+-------+------------------------------------------------------------------------------------------------------------------------------+

| xinxi | CREATE TABLE `xinxi` (

`id` int(11) DEFAULT NULL,

`score` decimal(5,2) DEFAULT NULL

) ENGINE=MyISAM DEFAULT CHARSET=utf8 |

+-------+------------------------------------------------------------------------------------------------------------------------------+

1 row in set (0.00 sec)

(3)使用create table创建表时用engine指定存储引擎,会使用指定的存储引擎。现在数据库的默认引擎是MyISAM,但创建新表时指定使用InnoDB,则新表的存储引擎就是InnoDBmysql> create table family(name char(10),chengwei char(10)) engine=InnoDB;

Query OK, 0 rows affected (0.07 sec)

mysql> show create table family;

+--------+---------------------------------------------------------------------------------------------------------------------------------+

| Table  | Create Table                                                                                                                    |

+--------+---------------------------------------------------------------------------------------------------------------------------------+

| family | CREATE TABLE `family` (

`name` char(10) DEFAULT NULL,

`chengwei` char(10) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

+--------+---------------------------------------------------------------------------------------------------------------------------------+

1 row in set (0.00 sec)

(4)批量修改多个表的存储引擎mysql5.5版本之前(包括5.5)有这个命令,可以这样操作。mysql5.7以后就不能这么操作了mysql_convert_table_format --user=root --password=密码 --socket=/路径/mysql.sock --engine=引擎 库名 表名

mysql_convert_table_format --user=root --password=abc123 --socket=/home/mysql/mysql.sock --engine=MyISAM test family info老版本5.5默认存储引擎为MyISAM 若要批量修改为InnoDB 则需修改命令本身的代码

具体步骤如下:

yum install perl-DBI -y

yum install perl-DBD-MySQL -y

vim /usr/local/mysql/bin/mysql_convert_table_format         //修改

//32行修改(修改后的内容为带加粗的部分)

"e|engine|type=s" => $opt_engine

mysql_convert_table_format --user=root --password=abc123 --socket=/home/mysql/mysql.sock --engine=InnoDB test family info

mysql引擎接口_Mysql存储引擎MyISAM和InnoDB相关推荐

  1. mysql 参照完整性规则_MySQL存储引擎你们知道多少?

    MySQL存储引擎技术详解点击观看! MySQL是我们经常使用的数据库处理系统(DBMS),不知小伙伴们有没有注意过其中的"存储引擎"(storage_engine)呢?有时候面试 ...

  2. mysql引擎总结_MySQL存储引擎对比总结

    存储引擎是数据库的核心,对于mysql来说,存储引擎是以插件的形式运行的.虽然mysql支持种类繁多的存储引擎,但是常用的就那么几种.这篇文章主要是对其进行一个总结和对比. 一.引言 在mysql5之 ...

  3. mysql federated 缺点_MySQL存储引擎--------Federated最佳实战

    1. 背景 * 本地MySQL数据库要访问远程MySQL数据库的表中的数据, 必须通过FEDERATED存储引擎来实现. * 有点类似Oracle中的数据库链接(DBLINK). 要允许这个存储引擎, ...

  4. MySQL两种表存储结构MyISAM和InnoDB的性能比较测试

    MySQL支持的两种主要表存储格式MyISAM,InnoDB,上个月做个项目时,先使用了InnoDB,结果速度特别慢,1秒钟只能插入10几条.后来换成MyISAM格式,一秒钟插入上万条.当时决定这两个 ...

  5. mysql 存储引擎接口_MySQL 的基础一(连接池, SQL接口, 查询解析器, 查询优化器, 存储引擎接口, 执行器,)...

    MySQL数据库的连接池 现在我们已经知道,我们任何一个系统都会有一个数据库连接池去访问数据库,也就是说这个系统会有多个数据库连接,供多线程并发的使用.同时我们可能会有多个系统同时去访问一个数据库,这 ...

  6. mysql 事务的好坏_mysql存储引擎:InnoDB和MyISAM的差别/优劣评价/评测/性能测试

    InnoDB和MyISAM简介 MyISAM:这个是默认类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的 顺序访问方法) 的缩写 ...

  7. mysql有那么多存储引擎_MySQL的多存储引擎架构

    支持多种存储引擎是众所周知的MySQL特性,也是MySQL架构的关键优势之一.如果能够理解MySQL Server与存储引擎之间是怎样通过API交互的,将大大有利于理解MySQL的核心基础架构.本文将 ...

  8. mysql存储引擎 索引优化_MySQL存储引擎,索引及基本优化策略

    存储引擎 与Oracle, SQL Server这些数据库不同,MySQL提供了多种存储引擎.什么是存储引擎?存储引擎其实就是一套对于数据如何存储,查询,更新,建立索引等接口的实现.不同存储引擎特性有 ...

  9. MySQL中常用的存储引擎(MyISAM 和InnoDB)

     数据库存储引擎是数据库底层软件组件,数据库管理系统(DBMS)使用存储引擎进行创建.查询.更新和删除数据操作.不同的存储引擎提供不同的存储机制.索引技巧.锁定水平等功能,使用不同的存储引擎,还可以获 ...

  10. mysql模板引擎_MYSQL存储引擎解释

    存储引擎解释 首先确定一点,存储引擎的概念是MySQL里面才有的,不是所有的关系型数据库都有存储引擎这个概念, ​ MySQL支持多种存储引擎,每种引擎有着一些自己独特的功能,用户在使用的时候,可以根 ...

最新文章

  1. 一文看懂自动驾驶关键技术
  2. 周期性定时事件的处理
  3. python 入门第二课2 file的文件操作
  4. META http-equiv=X-UA-Compatible content=IE=EmulateIE7
  5. 基于springmvc、ajax,后台连接数据库的增删改查
  6. 数字化转型鸿沟如何消除?ROMA Connect融合集成,联接企业应用现在与未来
  7. 完成端口中的单句柄数据结构与单IO数据结构的理解与设计
  8. 两台linux建立GRE隧道
  9. 【C/C++】【VS开发】结构体存储空间数据对齐说明
  10. 斯坦福后空翻机器人设计、代码全开源
  11. C# winForm启动最小化到任务栏右侧通知栏并交互操作
  12. 网友发现Q版西游:唐僧师徒脸谱上50元人民币
  13. 条码打印机、色带、碳带的知识分享 | 条码打印机色带碳带的选购经验 | 鸿顺捷知识分享
  14. 【个人记录 | 研二预答辩】
  15. nginx: [error] CreateFile() “D:\nginx-1.21.6/logs/nginx.pid“ failed (2: The system cannot find the
  16. Alpine-Linux:仅5MB的Linux
  17. 第二章:Djgo后台管理
  18. java计算机毕业设计临沂旅游咨询系统源码+系统+数据库+lw文档+mybatis+运行部署
  19. 防止引擎爬虫记录(君子协定)
  20. JS30 06 - Type Ahead

热门文章

  1. 20200610每日一句
  2. latex放一张大图在作者和正文之间
  3. 181202每日一句
  4. Atitit 项目常见问题 总结 prj prblm sumup 目录 第一章 提升可读性 复杂度简化 2 第二章 结构扁平化 2 第一节 缩短com.xxx.xxx名称 2 第二节 mod转
  5. Atitit mybatis缓存遇到的问题与解决 1.1. 只有getobj 没有执行putobject 1 1.2. 默认所有的select要读取缓存怎么办。。执行过滤 可以自己定义个白名单。
  6. Atitit 图像处理知识点  知识体系 知识图谱v2
  7. atitit.故障排除--- 当前命令发生了严重错误。应放弃任何可能产生的结果sql server 2008
  8. Paip.Php Java 异步编程。推模型与拉模型。响应式(Reactive)”编程FutureData总结... 1
  9. paip.slap工具与于64位win7与JDBC的性能对比
  10. paip.提升开发效率-----vs2010 快速查找文件