mysql引擎接口_Mysql存储引擎MyISAM和InnoDB
存储引擎介绍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相关推荐
- mysql 参照完整性规则_MySQL存储引擎你们知道多少?
MySQL存储引擎技术详解点击观看! MySQL是我们经常使用的数据库处理系统(DBMS),不知小伙伴们有没有注意过其中的"存储引擎"(storage_engine)呢?有时候面试 ...
- mysql引擎总结_MySQL存储引擎对比总结
存储引擎是数据库的核心,对于mysql来说,存储引擎是以插件的形式运行的.虽然mysql支持种类繁多的存储引擎,但是常用的就那么几种.这篇文章主要是对其进行一个总结和对比. 一.引言 在mysql5之 ...
- mysql federated 缺点_MySQL存储引擎--------Federated最佳实战
1. 背景 * 本地MySQL数据库要访问远程MySQL数据库的表中的数据, 必须通过FEDERATED存储引擎来实现. * 有点类似Oracle中的数据库链接(DBLINK). 要允许这个存储引擎, ...
- MySQL两种表存储结构MyISAM和InnoDB的性能比较测试
MySQL支持的两种主要表存储格式MyISAM,InnoDB,上个月做个项目时,先使用了InnoDB,结果速度特别慢,1秒钟只能插入10几条.后来换成MyISAM格式,一秒钟插入上万条.当时决定这两个 ...
- mysql 存储引擎接口_MySQL 的基础一(连接池, SQL接口, 查询解析器, 查询优化器, 存储引擎接口, 执行器,)...
MySQL数据库的连接池 现在我们已经知道,我们任何一个系统都会有一个数据库连接池去访问数据库,也就是说这个系统会有多个数据库连接,供多线程并发的使用.同时我们可能会有多个系统同时去访问一个数据库,这 ...
- mysql 事务的好坏_mysql存储引擎:InnoDB和MyISAM的差别/优劣评价/评测/性能测试
InnoDB和MyISAM简介 MyISAM:这个是默认类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的 顺序访问方法) 的缩写 ...
- mysql有那么多存储引擎_MySQL的多存储引擎架构
支持多种存储引擎是众所周知的MySQL特性,也是MySQL架构的关键优势之一.如果能够理解MySQL Server与存储引擎之间是怎样通过API交互的,将大大有利于理解MySQL的核心基础架构.本文将 ...
- mysql存储引擎 索引优化_MySQL存储引擎,索引及基本优化策略
存储引擎 与Oracle, SQL Server这些数据库不同,MySQL提供了多种存储引擎.什么是存储引擎?存储引擎其实就是一套对于数据如何存储,查询,更新,建立索引等接口的实现.不同存储引擎特性有 ...
- MySQL中常用的存储引擎(MyISAM 和InnoDB)
数据库存储引擎是数据库底层软件组件,数据库管理系统(DBMS)使用存储引擎进行创建.查询.更新和删除数据操作.不同的存储引擎提供不同的存储机制.索引技巧.锁定水平等功能,使用不同的存储引擎,还可以获 ...
- mysql模板引擎_MYSQL存储引擎解释
存储引擎解释 首先确定一点,存储引擎的概念是MySQL里面才有的,不是所有的关系型数据库都有存储引擎这个概念, MySQL支持多种存储引擎,每种引擎有着一些自己独特的功能,用户在使用的时候,可以根 ...
最新文章
- 一文看懂自动驾驶关键技术
- 周期性定时事件的处理
- python 入门第二课2 file的文件操作
- META http-equiv=X-UA-Compatible content=IE=EmulateIE7
- 基于springmvc、ajax,后台连接数据库的增删改查
- 数字化转型鸿沟如何消除?ROMA Connect融合集成,联接企业应用现在与未来
- 完成端口中的单句柄数据结构与单IO数据结构的理解与设计
- 两台linux建立GRE隧道
- 【C/C++】【VS开发】结构体存储空间数据对齐说明
- 斯坦福后空翻机器人设计、代码全开源
- C# winForm启动最小化到任务栏右侧通知栏并交互操作
- 网友发现Q版西游:唐僧师徒脸谱上50元人民币
- 条码打印机、色带、碳带的知识分享 | 条码打印机色带碳带的选购经验 | 鸿顺捷知识分享
- 【个人记录 | 研二预答辩】
- nginx: [error] CreateFile() “D:\nginx-1.21.6/logs/nginx.pid“ failed (2: The system cannot find the
- Alpine-Linux:仅5MB的Linux
- 第二章:Djgo后台管理
- java计算机毕业设计临沂旅游咨询系统源码+系统+数据库+lw文档+mybatis+运行部署
- 防止引擎爬虫记录(君子协定)
- JS30 06 - Type Ahead
热门文章
- 20200610每日一句
- latex放一张大图在作者和正文之间
- 181202每日一句
- Atitit 项目常见问题 总结 prj prblm sumup 目录 第一章 提升可读性 复杂度简化	2 第二章 结构扁平化	2 第一节 缩短com.xxx.xxx名称	2 第二节 mod转
- Atitit mybatis缓存遇到的问题与解决 1.1. 只有getobj 没有执行putobject	1 1.2. 默认所有的select要读取缓存怎么办。。执行过滤 可以自己定义个白名单。
- Atitit 图像处理知识点 知识体系 知识图谱v2
- atitit.故障排除--- 当前命令发生了严重错误。应放弃任何可能产生的结果sql server 2008
- Paip.Php Java 异步编程。推模型与拉模型。响应式(Reactive)”编程FutureData总结... 1
- paip.slap工具与于64位win7与JDBC的性能对比
- paip.提升开发效率-----vs2010 快速查找文件