美文网首页
数据库优化

数据库优化

作者: yubook | 来源:发表于2019-11-29 10:05 被阅读0次

存儲引擎(数据存储形式,锁的粒度,事务,数据的存储特点)

  1. InnoDB是默认的事务型存储引擎, 并且通过一些机制和工具,支持真正的热备份
  2. 锁的粒度 它的锁粒度是行锁
  3. InnoDB表是基于聚簇索引(另一篇博客有介绍)建立的,聚簇索引对主键的查询有很高的性能,
  4. MyISAM不支持事务
  5. 数据的存储特点 MyISAM是基于非聚簇索引进行存储的。
  6. 锁的粒度 MyISAM不支持行锁,所以读取时对表加上共享锁,在写入是对表加上排他锁。由于是对整张表加锁,相比InnoDB,在并发写入时效率很低。
  7. 两种存储引擎各有各的有点,MyISAM专注性能,InnoDB专注事务。两者最大的区别就是InnoDB支持事务,和行锁。 這個是要根據具體的業務來劃分的
    兩者之間需要在用的時候需要 分析用哪個
    如何在两种存储引擎中进行选择?
    ① 是否有事务操作?有,InnoDB。
    ②是否存储并发修改?有,InnoDB。
    ③是否追求快速查询,且数据修改较少?是,MyISAM。
    ④是否使用全文索引?如果不引用第三方框架,可以选择MyISAM,但是可以选用第三方框架和InnDB效率会更高。
  1. 緩存
  2. 分庫分表
  3. 讀寫分離
  4. 主從複製
  5. 備份
  6. 執行計劃
  7. 碎片整理

数据库语句优化的方案

避免全表扫描

首先考虑在 where 以及order by 设计的列上创建索引 避免全表扫描
尽量避免在where 字句中使用!<> 或者<> 操作 否则数据库引擎会全表扫描
尽量避免在where 子句的查询字段上进行null 值得判断 可能引起全表扫描
应该尽量避免使用or连接条件 否则导致引擎放弃使用索引 进行全表扫描
in和not in 谨慎使用 否则也会导致全表扫描 对于连接的数值 使用between 代替 in
尽量避免在where 子句中对字段进行表达式操作
尽量避免在where 子句中对字段使用函数操作
用exist 代替in
尽量使用数字类型
使用具体的列名代替 *
尽量使用变量代替临时表
避免频繁的创建和删除临时表
尽量避免使用游标
尽量避免向客户端返回大数据量
避免大量的事务操作 提高并发能力
LIKE操作符

相关文章

  • zabbix优化之进阶版

    官网调优 1. 数据库优化 1.设置数据库分区优化,buffer优化,hash优化, 说明:数据库分区优化的优点:...

  • 数据库存储原理特性索引优化

    说一下mysql数据库存储的原理? 事务的特性? 数据库索引 数据库怎么优化查询效率? 数据库优化方案 优化索引、...

  • MySQL优化

    数据库SQL优化大总结之 百万级数据库优化方案

  • 数据库索引创建与优化

    对于数据库的优化主要包括三个部分:查询优化、索引优化和字段类型优化,其中,索引优化则是数据库优化的重中之重。一个查...

  • 数据库调优

    数据库优化

  • 如何设计一个高并发的系统

    数据库的优化,包括合理的事务隔离级别、SQL语句优化、索引优化 使用缓存、尽量减少数据库IO 分布式数据库、分布式...

  • Web性能优化常见技巧

    阶段一:访问网页地址 阶段二:发出请求:http请求优化 阶段三:访问数据库 (SQL数据库优化)后端优化 阶段四...

  • MySql数据库的优化--数据库设计上的优化

    Mysql数据的优化分为两个部分,一个是数据库设计上的优化,另一个是数据库执行时的优化。 数据库设计上的优化 有些...

  • MySQL数据库优化的这几种方式你都知道吗?

    数据库优化涉及到方方面面的知识,每种数据库的架构,优化方式也都有着很大的差异,如果想做好数据库优化要了解数据库的技...

  • mysql数据库优化 摘要

    数据库优化 sql语句优化 索引优化 加缓存 读写分离 分区 分布式数据库(垂直切分) 水平切分 MyISAM和I...

网友评论

      本文标题:数据库优化

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