xiaoyi's blog
首页
  • 后端文章

    • PHP
  • 学习笔记

    • 《Git》学习笔记
  • MySQL
  • NoSQL
  • 中间件
  • Linux
  • Nginx
  • 网络
  • Mac
  • 学习笔记

    • 《Nginx》学习笔记
  • 学习
  • 博客搭建
  • 技术文档
  • GitHub技巧
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
  • 网站
  • 资源
  • 分类
  • 标签
  • 归档
GitHub

xuexuguang

后端新秀
首页
  • 后端文章

    • PHP
  • 学习笔记

    • 《Git》学习笔记
  • MySQL
  • NoSQL
  • 中间件
  • Linux
  • Nginx
  • 网络
  • Mac
  • 学习笔记

    • 《Nginx》学习笔记
  • 学习
  • 博客搭建
  • 技术文档
  • GitHub技巧
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
  • 网站
  • 资源
  • 分类
  • 标签
  • 归档
GitHub
  • 学习

  • GitHub技巧

  • 面试

    • 面试问题集锦
    • PHP基础
    • 正则表达式
    • PHP文件操作
    • PHP会话控制
    • 自定义函数及内置函数
    • MVC对比
    • linux
    • MySQL数据库基础
    • MySQL创建高性能的索引
    • MySQL的SQL优化
    • MySQL的高可扩展和高可用
    • MySQL安全
    • 常见算法
    • 常见数据结构
    • 高并发解决方案
    • 流量优化
    • 浏览器缓存和数据压缩
    • 图片优化
    • 静态化处理
    • 动态语言并发处理
    • 数据库缓存优化
      • 数据表数据类型的优化
      • 索引优化
        • 索引的创建原则
      • SQL语句的优化
        • 优化过程中的数据访问
        • 优化长难句的查询语句
        • 优化特定类型的查询语句
      • 存储引擎的优化
        • 分区操作
        • 分库分表
      • 数据库服务器架构的优化
    • 负载均衡
  • 博客搭建

  • 心情杂货

  • 技术文档

  • 实用技巧

  • 友情链接
  • 更多
  • 面试
xuexuguang
2020-12-31

数据库缓存优化

# MySQL数据库的优化

# 数据表数据类型的优化

需要考虑的两个问题:

  1. 字段使用什么样的数据类型更合适?
  2. 字段使用什么样的数据类型性能更快?
字段类型 考虑的问题
int、tinyint、bigint 考虑空间的问题、考虑范围的问题
char、varchar 存储字符串长度是否固定
enum 特定、固定的分类可以使用enum存储,效率更快
IP地址存储 使用整型存储IP地址

# 索引优化

索引的优化主要主要两个点:

  1. 建立合适的索引
  2. 索引在什么样的效率最高

# 索引的创建原则

  1. 索引并不是越多越好,在合适的字段上建立合适的索引,索引在提高读效率的同时,降低了写的效率
  2. 复合索引的前缀原则,对多个字段a,b,c建立索引 ,跳过a使用其他字段作为索引字段无法使用到索引
  3. like查询%的问题,如果%在前,无法命中索引
  4. 全表扫描的优化,mysql在查询的时候,优先走索引,如果单表查询的数据跟全表一样,就放弃索引,直接扫表
  5. or条件索引使用情况,如果or前面有索引后面没有索引的话则使用不到索引
  6. 字符串类型索引失效的问题,对于字符串类型的字段,在使用索引的时候,需要加''号,不然没法命中索引

# SQL语句的优化

需要考虑的几个方向:

  1. 优化过程中的数据访问
  2. 优化长难句的查询语句
  3. 优化特定类型的查询语句

# 优化过程中的数据访问

  1. 按需获取数据,使用limit
  2. 返回列避免使用*,直接使用列

# 优化长难句的查询语句

  1. 变复杂为简单,将复杂的SQL拆分为简单SQL
  2. 切分查询,对于大数据,分批处理
  3. 分解关联查询,拆分多个查询,有利用做数据层面的缓冲

# 优化特定类型的查询语句

  1. 优化count()
  2. 优化关联查询
  3. 优化子查询
  4. 优化GroupBy和distinct
  5. 优化limit和union

# 存储引擎的优化

需要考虑的点

  1. 尽量使用InnoDB进行存储,使用独立表空间,行锁
  2. 分区分库
  3. 分库分表

# 分区操作

  1. 通过特定的策略对数据表进行物理拆分
  2. 对用户透明
  3. parting by

# 分库分表

  1. 水平拆分,拆分热数据和冷数据
  2. 垂直拆分,拆分常用的列和不常用的列

# 数据库服务器架构的优化

需要考虑的点:

  1. 主从复制 ,使用MySQL binlog日志来实现主从复制
  2. 读写分离
  3. 双主热备
  4. 负载均衡,通过LVS的三种基本模式实现负载均衡或者MyCat数据库中间件实现负载均衡
编辑
#高并发面试题
上次更新: 2020/12/31, 06:55:18
动态语言并发处理
负载均衡

← 动态语言并发处理 负载均衡→

最近更新
01
MVC对比
12-31
02
负载均衡
12-31
03
动态语言并发处理
12-31
更多文章>
Theme by Vdoing | Copyright © 2020-2020 Evan Xu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式