美文网首页
MySQL数据库中存储引擎和数据类型

MySQL数据库中存储引擎和数据类型

作者: IT的咸鱼 | 来源:发表于2018-07-10 21:14 被阅读0次

什么是存储引擎:

数据库引擎是用于存储、处理和保护数据的核心服务。利用数据库引擎可控制访问权限并快速处理事务,从而满足企业内大多数需要处理大量数据的应用程序的要求。 使用数据库引擎创建用于联机事务处理或联机分析处理数据的关系数据库。这包括创建用于存储数据的表和用于查看、管理和保护数据安全的数据库对象(如索引、视图和存储过程)。

查看数据库支持存储引擎:    show engines;

查看数据库默认引擎:               show variables like 'default_storage_engine';

你要看某个表用了什么引擎(在显示结果里参数engine后面的就表示该表当前用的存储引擎):       show create table 表名;

                         mysql中的存储引擎

InnoDB:

支持事务操作(如 begin, commit,rollback命令),支持行级锁,行级锁相对于表锁,其粒度更细,允许并发量更大,支持外键引用完整性约束。InnoDB存储引擎也是MySQL 5.7版本中默认的存储引擎。其缺点是:存储空间会占用比较大。

InnoDB适用于以下的场合:

1. 更新多的表,适合处理多重并发的更新请求。

2. 支持事务。

3. 可以从灾难中恢复(通过bin-log日志等)。

4. 外键约束。只有他支持外键。

5. 支持自动增加列属性auto_increment。

MyISAM:

MYISAM强调了快速读取操作,这可能就是为什么MySQL受到了WEB开发如此青睐的主要原因:在WEB开发中你所进行的大量数据操作都是读取操作。所以,大多数虚拟主机提供商和INTERNET平台提供商只允许使用MYISAM格式。MyISAM格式的一个重要缺陷就是不能在表损坏后恢复数据。

特点:

1.  不支持事务,但是并不代表着有事务操作的项目不能用MyIsam存储引擎,可以在service层进行根据自己的业务需求进行相应的控制。

2.  不支持外键。

3.  查询速度很快。如果数据库insert和update的操作比较多的话采用表锁效率低(建议使用innodb)。

4.  对表进行加锁。

Memory:

该存储引擎最大的特点是,所有数据均保存在内存中,之前还有个名字叫做 「Heap」。

使用Memory存储引擎情况:

  1. 目标数据比较小,而且非常频繁的进行访问,在内存中存放数据,如果太大的数据会造成内存溢出。可以通过参数max_heap_table_size控制Memory表的大小,限制Memory表的最大的大小。

  2. 如果数据是临时的,而且必须立即可用得到,那么就可以放在内存中。

  3. 存储在Memory表中的数据如果突然间丢失的话也没有太大的关系。

  【注】 Memory同时支持散列索引和B树索引,B树索引可以使用部分查询和通配查询,也可以使用<,>和>=等操作符方便数据挖掘,散列索引相等的比较快但是对于范围的比较慢很多。

                             如何选择存储引擎

每种存储引擎都有各自优势,不能说谁更好,只能说谁更适合

innoDB存储引擎:用于事务处理应用程序,具有众多特性,包括ACID事务支持,支持外键,同时支持崩溃修复能力和并发控制

MylSAM存储引擎:管理非事务表,它提供高速存储和检索,以及全文搜索能力

MEMORY存储引擎:MEMOR存储引擎提供" 内存中"表,MEMORY存储引擎的所有数据都在内存中,数据的处理速度快,但是安全性较低

修改默认存储引擎:

default-storage-engine=INNODB;

重启MySQL

                                数据类型

一、MySQL的数据类型

主要包括以下四大类:

整数类型:BIT、BOOL、TINY INT、SMALL INT、MEDIUM INT、 INT、 BIG INT

浮点数类型:FLOAT、DOUBLE、DECIMAL

字符串类型:CHAR、VARCHAR、TINY TEXT、TEXT、MEDIUM TEXT、LONGTEXT、TINY BLOB、BLOB、MEDIUM BLOB、LONG BLOB

日期类型:Date、DateTime、TimeStamp、Time、Yea

1、整型

MySQL数据类型              含义(有符号)

tinyint(m)                        1个字节  范围(-128~127)

smallint(m)                    2个字节  范围(-32768~32767)

mediumint(m)               3个字节  范围(-8388608~8388607)

int(m)                             4个字节   范围(-2147483648~2147483647) 

bigint(m)                        8个字节  范围(+-9.22*10的18次方)

取值范围如果加了unsigned,则最大值翻倍,如tinyint unsigned的取值范围为(0~256)。

 int(m)里的m是表示SELECT查询结果集中的显示宽度,并不影响实际的取值范围,没有影响到显示的宽度,不知道这个m有什么用。

2、浮点型(float和double)

MySQL数据            类型含义

float(m,d)                 单精度浮点型    8位精度(4字节)     m总个数,d小数位

double(m,d)            双精度浮点型    16位精度(8字节)    m总个数,d小数位

设一个字段定义为float(6,3),如果插入一个数123.45678,实际数据库里存的是123.457,但总个数还以实际为准,即6位。整数部分最大是3位,如果插入数12.123456,存储的是12.1234,如果插入12.12,存储的是12.1200.

3、字符串(char,varchar,_text)

MySQL数据                  类型含义

char(n)                          固定长度,最多255个字符

varchar(n)                     固定长度,最多65535个字符

tinytext                          可变长度,最多255个字符

text                                 可变长度,最多65535个字符

mediumtext                  可变长度,最多2的24次方-1个字符

longtext                         可变长度,最多2的32次方-1个字符

char和varchar:

1.char(n) 若存入字符数小于n,则以空格补于其后,查询之时再将空格去掉。所以char类型存储的字符串末尾不能有空格,varchar不限于此。 

2.char(n) 固定长度,char(4)不管是存入几个字符,都将占用4个字节,varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),

所以varchar(4),存入3个字符将占用4个字节。 

3.char类型的字符串检索速度要比varchar类型的快。

varchar和text:

1.varchar可指定n,text不能指定,内部存储varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),text是实际字符数+2个字

节。 

2.text类型不能有默认值。 

3.varchar可直接创建索引,text创建索引要指定前多少个字符。varchar查询速度快于text,在都创建索引的情况下,text的索引似乎不起作用。

4.二进制数据(_Blob)

1._BLOB和_text存储方式不同,_TEXT以文本方式存储,英文存储区分大小写,而_Blob是以二进制方式存储,不分大小写。

2._BLOB存储的数据只能整体读出。 

3._TEXT可以指定字符集,_BLO不用指定字符集

5.日期时间类型

MySQL数据                  类型含义

date                              日期 '2008-12-2'

time                               时间 '12:25:36'

datetime                       日期时间 '2008-12-2 22:06:44'

timestamp                    自动存储记录修改时间

若定义一个字段为timestamp,这个字段里的时间数据会随其他字段修改的时候自动刷新,所以这个数据类型的字段可以存放这条记录最后被修改的时间。

数据类型的属性

MySQL关键字                              含义

NULL                                            数据列可包含NULL值

NOT NULL                                   数据列不允许包含NULL值

DEFAULT                                      默认值

PRIMARY KEY                            主键

AUTO_INCREMENT                  自动递增,适用于整数类型

UNSIGNED                                  无符号

CHARACTER SET name          指定一个字符集

相关文章

  • 三、数据类型和约束

    1、数据类型 在MySQL数据库管理系统中,可以通过存储引擎来决定表的类型。同时,MySQL数据库管理系统也 提供...

  • A.001.3.Mysql存储引擎

    1.存储引擎的基本概念 2.MySQL 5.7 支持的存储引擎 3.MySQL数据库中的存储引擎 4.MySQL ...

  • MySql 常用指令

    MySQL常用指令 MySQL 存储引擎 选择 MySQL 数据类型

  • SQL学习笔记——存储引擎(了解)

    存储引擎 存储引擎是MySQL中特有的术语,其他数据库中没有(Oracle中有,但不叫这个名字)实际上,存储引擎是...

  • MySQL小记(一):存储引擎

    MySQL存储引擎 MySQL默认支持多种存储引擎,以适用于不同领域的数据库应用。MySQL5.0支持的存储引擎包...

  • 2、MySQL数据库引擎有哪些

    MySQL数据库引擎有哪些 如何查看mysql提供的所有存储引擎: mysql常用引擎包括:MyISAM、...

  • MySQL 常用存储引擎

    1、MySQL存储引擎概述 插件式存储引擎是MySQL数据库最重要的特性之一,用户可以根据应用的需要选择如何存储和...

  • MySLQ存储引擎

    1、MySQL存储引擎简介 插件式存储引擎是MySQL数据库最重要的特性之一,用户可以根据应用的需要选择如何存储和...

  • 5.1MySQL数据库基础考点

    全方位剖析 考点分析 MySQL数据类型延伸:MySQL的基础操作延伸:MySQL存储引擎延伸:MySQL存储机制...

  • Mysql 数据库存储引擎

        我们在使用 MySQL 数据库时,选择合适的存储引擎是很重要的。MySQL 数据库提供了多种存储引擎,它们...

网友评论

      本文标题:MySQL数据库中存储引擎和数据类型

      本文链接:https://www.haomeiwen.com/subject/fivqpftx.html