标签:大写 思想 需要 font 数据 构建 范式 microsoft 空间换时间
概念:决定数据库数据增删改查的方式,MySQL的核心就是存储引擎;
InnoDB:默认的引擎,支持事务、外键,查询效率相对较低,安全性较高;
MyISAM:不支持事务,查询效率相对较高,增删改效率较低。
SHOW ENGINES # 命令来查看MySQL提供的引擎 SHOW VARIABLES LIKE ‘storage_engine‘; # 查看数据库默认使用哪个引擎
如果要提供提交、回滚、崩溃恢复能力的事物安全(ACID兼容)能力,并要求实现并发控制,InnoDB是一个好的选择
如果数据表主要用来插入和查询记录,则MyISAM引擎能提供较高的处理效率
如果只是临时存放数据,数据量不大,并且不需要较高的数据安全性,可以选择将数据保存在内存中的Memory引擎,MySQL中使用该引擎作为临时表,存放查询的中间结果
如果只有INSERT和SELECT操作,可以选择Archive,Archive支持高并发的插入操作,但是本身不是事务安全的。Archive非常适合存储归档数据,如记录日志信息可以使用Archive
使用哪一种引擎需要灵活选择,一个数据库中多个表可以使用不同引擎以满足各种性能和实际需求,使用合适的存储引擎,将会提高整个数据库的性能
1.多台机器
2.数据有多份,每台机器数据是一样的
3.解决数据高可用
分布式:
1.多台机器
2.数据有一份,每台机器数据是不同的,合在一起,是一份数据
3.解决数据高吞吐
作用: 利用主从在达到高可用的同时,也可以通过读写分离提供吞吐量。
注意: 对于事务中同时包含读写操作,与事务隔离级别设置有关,如果事务隔离级别为read-uncommitted 或者 read-committed,读写分离没影响,如果隔离级别为repeatable-read、serializable,读写分离就有影响,因为在slave上会看到新数据,而正在事务中的master看不到新数据。
2.查询时使用select明确指明所要查询的字段,避免使用select *
的操作
3.SQL语句尽量大写
4.尽量避免在 where 子句中使用!=或<>操作符, MySQL只有对以下操作符才使用索引<,<=,=,>,>=,BETWEEN,IN,以及某些时候的LIKE
5.遵循最左原则,在where子句中写查询条件时把索引字段放在前面
6.能使用关联查询解决的,尽量不要使用子查询
能不使用关联查询的尽量不要使用关联查询
7.不需要获取全表数据的时候,不要查询全表数据,使用LIMIT来限制数据。
1.在进行表设计时,可适度增加冗余字段(空间换时间的思想,反范式设计),减少JOIN操作,可以提高查询效率
3.选择恰当的数据类型,
4.对于强调快速读取的操作,可以考虑使用MyISAM数据库引擎
5.对较频繁的作为查询条件的字段创建索引;唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件;更新非常频繁的字段不适合创建索引
6.编写SQL时使用上面的方式对SQL语句进行优化
7.使用慢查询工具找出效率低下的SQL语句进行优化
8.构建缓存,减少数据库磁盘操作
9.可以考虑结合使用内存型数据库,如Redis,进行混合存储。
标签:大写 思想 需要 font 数据 构建 范式 microsoft 空间换时间
原文地址:https://www.cnblogs.com/flyai/p/12181696.html