MySQL数据库优化总结《高性能MySQL》指导其他指导

《高性能MySQL》指导

性能优化 1.表优化 2.索引优化 3.查询优化 4.服务器优化 5.系统与硬件优化

稳定优化 1.复制 2.可拓展 3.高可用,避免单点失效等 4.云 5.备份恢复

1.表优化 选择合适的数据类型 减少列和关联 反范式冗余 缓存表、计数器表

2.索引优化 索引独立放在符号的一侧 前缀/翻转后缀索引 合适的多列索引顺序 聚簇索引(索引组织表) 覆盖需要返回字段索引 索引排序 压缩 移除冗余和重复索引 (唯一和主键都是索引) 索引减少锁定

3.查询优化 减少访问和返回 多个简单查询以便缓存和短锁 切分减少锁持续 最值加 LIMIT 1 没有 WHERE 的 COUNT() 是直接获得 用 COUNT() - 少数行查询 使用 EXPLAIN 估算 去除 DISTINCT 以避免排序 确保 ON 或 USING 子句上有索引 确保汇总排序只涉及一个表才有可能用索引 MySQL5.5 使用关联查询代替子查询 先LIMIT再关联 返回多一条数据如果没有就不下一页 UNION ALL 以避免自动 DISTINCT

其他指导

or 用 in 代替,或者 UNION ALL 代替后在应用层处理重复数据 GROUP BY确认不需要排序时用ORDER BY NULL 避免多余排序 导入数据前set unique_checks=0导好设1 insert delayed异步合并写入,但宕机丢数据

高速查询 userServerPrepStmts=true cachePrepStmts=true

高速插入(同时用手动提交事务) useServerPrepStmts=false rewriteBatchedStatements=true useCompression=true

join 空分开

select * from a
join b
  on a.k is not null
  and a.k = b.k
union all
select * from a
  where a.k is null

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏个人随笔

MySQL 视图

数据库视图是虚拟表或逻辑表,它被定义为具有连接的SQL SELECT查询语句。 因为数据库视图与数据库表类似,它由行和列组成,因此可以根据数据库表查询数据。 大...

34811
来自专栏技术博文

SQL中的DML、DDL以及DCL

DML(data manipulation language)是数据操纵语言:它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这...

2816
来自专栏维C果糖

史上最简单的 MySQL 教程(二十九)「外键(下)」

外键:foreign key,外面的键,即不在自己表中的键。如果一张表中有一个非主键的字段指向另外一张表的主键,那么将该字段称之为外键。每张表中,可以有多个外键...

3994
来自专栏Greenplum

Greenplum使用pg_dump备份数据库

Greenplum 支持逻辑备份。我们使用Greenplum自带的pg_dump命令实现逻辑备份功能,导出备份文件,再通过 psql 导入到Greenplum中...

2274
来自专栏PhpZendo

MySQL创建用户与授权

假如你在给用户'pig'@'%'授权的时候是这样的(或类似的):GRANT SELECT ON test.user TO 'pig'@'%',则在使用REVOK...

1961
来自专栏ImportSource

锁系列-Mysql中的锁

在计算机科学中,锁是在执行多线程时用于强行限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的满足。 目录: 1、行级锁、表级锁、页级锁 2、共享锁和排它...

36315
来自专栏Albert陈凯

SQL语句各个部分执行顺序

http://www.tuicool.com/articles/fERNv2 下面先给出上面的SQL语句的执行顺序,然后进行讲解: (8)  select (...

2897
来自专栏PHP在线

MYSQL 优化常用方法

1、选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快。因此,在创建表的时候,为了获得更...

3338
来自专栏JavaQ

MySQL存储引擎InnoDB和MyISAM对比总结(更新)

本篇内容对MySQL两个主要存储引擎InnoDB和MyISAM进行对比总结。 InnoDB引擎 InnoDB是一个事务型的存储引擎,设计目标是处理大数量数据时提...

3568
来自专栏Java编程技术

Mysql中INSERT ... ON DUPLICATE KEY UPDATE的实践

在日常业务开发中经常有这样一个场景,首先创建一条记录,然后插入到数据库;如果数据库已经存在同一主键的记录,则执行update操作,如果不存在,则执行insert...

1073

扫码关注云+社区