Mysql数据库常用存储引擎
数据库存储引擎:是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。MySQL的核心就是插件式存储引擎。
查看存储引擎:
mysql> show engines;
MySQL给用户提供了许多不同的存储引擎。在MySQL中,不需要在整个服务器中使用同一种存储引擎,针对具体的要求,可以对每一个表使用不同的存储引擎。Support列的值表示某种引擎是否能使用:YES表示可以使用、NO表示不能使用、DEFAULT表示该引擎为当前默认的存储引擎。
使用下面sql可以查看默认使用的引擎:
mysql> show variables like ‘storage_engine’;
几种常见的存储引擎:
InnoDB存储引擎:
InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),其它存储引擎都是非事务安全表,支持行锁定和外键,MySQL5.5以后默认使用InnoDB存储引擎。
支持事务处理,支持外键,支持崩溃修复能力和并发控制。如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交(commit)和回滚(rollback)。
MyISAM存储引擎:
MyISAM基于ISAM存储引擎,并对其进行扩展。它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。MyISAM拥有较高的插入、查询速度,但不支持事务,不支持外键。
插入数据快,空间和内存使用比较低。如果表主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率。如果应用的完整性、并发性要求比较低,也可以使用。
MERGE存储引擎:
Merge存储引擎是一组MyISAM表的组合,这些MyISAM表必须结构完全相同,merge表本身并没有数据,对merge类型的表可以进行查询,更新,删除操作,这些操作实际上是对内部的MyISAM表进行的。
关于存储引擎的一些命令:
查看表的存储引擎:
Show create table table_name;
或者
show table status from db_name where name=‘table_name’;
修改表的存储引擎sql:
Alter table table_name type=InnoDB;
或者
alter table student engine=MyISAM;
创建表时指定存储引擎:
mysql> create table test1(id int) engine= MyISAM
或者
#vi /etc/my.cnf
[mysqld]
default-storage-engine=INNODB
或者使用命令修改:
mysql> set default_storage_engine=MyISAM
Mysql的存储引擎,myisam和innodb的区别。
答:
1.MyISAM非事务的存储引擎,适合用于频繁查询的应用。表锁,不会出现死锁,适合小数据,小并发。
2.innodb是支持事务的存储引擎,合于插入和更新操作比较多的应用,设计合理的话是行锁(最大区别就在锁的级别上), 适合大数据,大并发。
数据表类型有哪些
答: MyISAM、InnoDB、 HEAP、BOB,ARCHIVE,CSV等。
MyISAM :成熟、稳定、易于管理,快速读取。一些功能不支持 (事务等),表级锁。
InnoDB :支持事务、外键等特性、数据行锁定。空间占用大,不支持全文索引等。
MySQL数据库作发布系统的存储,-天五万条以上的增量,预计运维三年,怎么优化?
a.设计良好的数据库结构,允许部分数据冗余,尽量避免join查询,提高效率。
b.选择合适的表字段数据类型和存储引擎,适当的添加索引。
c. mysq|库主从读写分离。
d.找规律分表,减少单表中的数据量提高查询速度。
e。添加缓存机制,比如memcached, apc等。
f.不经常改动的页面,生成静态页面。
g.书写效率的SQL。比如SELECT * FROM TABEL改为SELECT field_ 1, field_ 2, field_ 3 FROM TABLE.
对于大流量的网站,您采用什么样的方法来解决各页面访问量统计问题?
答:a.确认服务器是否能支撑当前访问量。
b.优化数据库访问。
c.禁止外部访问链接(盗链) , 比如图片盗链。
d.控制文件下载。
e.使用不同主机分流。
f.使用浏览统计软件,了解访问量,有针对性的进行优化。
如何进行SQL优化?
(1)选择正确的存储引擎
以MySQL为例,包括有两个存储引擎MyISAM和InnoDB,每个引擎都有利有弊。
MyISAM适合于一些需要大查询的应用,但其对于有大量写操作并不是很好。甚至你只是需要update-一个字段,整个表都会被锁起来,而别的进程,就算是读进程都无法操作直到这操