sql 优化(三):如何选择mysql的存储引擎

如何选择mysql的存储引擎
存储引擎
一部电影可能有多种的格式,就是存储的方式 rmvb ,mp4 ,avi ,存储方式不同的占用的空间清晰程度也是不一样的
表里的数据存储在硬盘上具体如何存储的,存储的方式方法也有多种,对于用户来说,无论用哪一种存储引擎存储用户看到的数据是一样的,但是对于服务器而言是不一样的

数据库服务器就是帮助用户管理数据的,所以就看哪一种引擎更快更加安全
数据库对同样的数据,有着不同的存储方式和管理方式,在mysql 中,成为存储引擎
在开发中,我们经常使用的存储引擎 myisam / innodb/ memory
 

这个是原来的,现在innodb 在mysql 5.5版本 已经引入了全文索引的支持了,
MyISAM:批量插入速度快,不支持事务,锁表
外键 MyISAM 不支持外键, INNODB支持外键.
INNODB 存储: 批量插入相对较慢,支持事务,锁行
全文索引:现在MyISAM INNODB mysql 5.5 都支持了
 Memory 存储,比如我们数据变化频繁,不需要入库,同时又频繁的查询和修改,我们考虑使用memory, 速度极快.
CREATE TABLE userstate (
    id INT PRIMARY KEY,
    state TINYINT
) ENGINE = memory;
Insert into userstate values(1,0);
Insert into userstate values(2,2);
Insert into userstate values(3,2);

但是当把mysql 服务器重新启动了以后,再查的话就不见了,说明数据就只是在内存中,并没有真的入库
对于存储引擎是MyISAM的数据库,如果经常做删除和修改记录的操作,要定时执行optimize table table_name;功能对表进行碎片整理
举例说明:
create table test100(id int unsigned ,name varchar(32))engine=myisam;
insert into test100 values(1,'aaaaa');
insert into test100 values(2,'bbbb');
insert into test100 values(3,'ccccc');
在这个路径下C:/ProgramData/MySQL/MySQL Server 5.5/Data/

Insert into test100 select id,name from test100;

在添加完数据以后

文件的大小变大了

这个时候删除数据

Delete from test100 where id =3;

正常情况下数据的大小应该发生变化,应该是变为原来的2/3

实际上

即使删除了文件以后但是文件的大小没有发生变化

我们应该定义对myisam进行整理

optimize table test100;

所以知道这种myisam 这种索引,如果不优化的话,数据会一直增长,造成系统很卡
选择合适的数据类型
1 尽量使用定点数(decimal)也尽量不要使用float

猜你喜欢

转载自blog.csdn.net/qq_20610631/article/details/82057036
今日推荐