热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MySQL数据库索引及优化

索引什么是索引索引是用来提高数据库性能的常用工具,索引就像数据的目录一样,通过索引可以快速找到需要的内容。索引的原理,加快查询索引是建立了针对数据内容的排序结果的指针,根据

索引

什么是索引

索引是用来提高数据库性能的常用工具,索引就像数据的目录一样,通过索引可以快速找到需要的内容。

索引的原理,加快查询

索引是建立了针对数据内容的排序结果的指针,根据指针快速定位所要的数据。

索引的设计原则

1  索引列一般为where子句中的列或连接列子句中的列。

2  尽量不对基数小的列做索引。

3  尽可能使用短索引,如果对字符列索引尽量指定最小长度。

4  复合索引前缀特性,索引的顺序很重要。

  创建复合索引时将最常用限制条件列放在最左边,一次递减。

5  避免出现无用的索引。

6  InnoDB尽量指定主键。

避免过度使用索引

1  索引的建立对提高检索能力有用,但是对数据库维护很费资源。

2  对选择性不高的列(例如性别)过度索引,影响插入更新速度。

3  索引会占用磁盘空间,降低写操作,执行计划要考虑各个索引。

4  索引不是越多越好。

索引语法

1  创建索引语法

Syntax:
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name
    [index_type]
    ON tbl_name (index_col_name,...)
    [index_option]
    [algorithm_option | lock_option] ...

2  删除索引

Syntax:
DROP INDEX index_name ON tbl_name
    [algorithm_option | lock_option] ...

3  查看表索引

mysql> show index from t1;

更多语法用帮助查看

mysql> help create index
mysql> help alter table

索引类型

1  主键索引

2  唯一索引

3  复合索引

4  覆盖索引

5  函数索引

6  分区索引

优化

1  硬件软件优化。

  硬件:cpu、内存、硬盘(性能ssd > sas > sata)、磁盘raid

  软件:操作系统(x86_64)、MySQL(编译安装)

2  参数优化(my.cnf)。

  监控(show global status \G)、工具(mysqlreport)

3  SQL语句的优化。 

  1.索引的优化。

    a 抓出慢sql,配置my.cnf,或白名单机制

     long_query_time=2 #大于2秒就记录

       log-slow-queries=/data/3306/slow-log.log # 按天轮询 按天分析

    b 慢查询日志分析工具

      mysqlsla

    c 处理:每天晚上0点定时分析慢查询。

  2.SQL语句的拆分(大的复杂的SQL语句拆分成小的)。

    子查询、join连表查询

  3.数据库是存储数据的地方,计算功能尽量放在前端应用程序。

  4.搜索功能,一般不要用数据库。

4  架构的优化。

  1.业务上进行拆分(像搜索 like)

  2.数据库前端必须加缓存cache,例:memcached。

  3.某些业务使用nosql持久化存储,例:memcahcedb,redis。

  4.动态的数据静态化,整个文件静态化,页面片段静态化。

  5.数据库集群与读写分离,一主多从等,通过程序或dbproxy进行集群读写分离。

  6.单表超过千万,拆库拆表。

5  流程制度安全优化。 

   1.任何一次人为数据库记录的更新都要走流程。

   2.客户端管理。

 


推荐阅读
  • MySQL:互联网公司常用 分库分表
    本文目录一、数据库瓶颈IO瓶颈CPU瓶颈二、分库分表水平分库水平分表垂直分库垂直分表三、分库分表工具四、分库分表步骤五、分库分表问题非partit ... [详细]
  • Java工程师书单(初级,中级,高级)
    简介怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序员也是工作一两年之后开始迷茫的程序 ... [详细]
  • 架构师必读:日均500万数据,如何进行数据存储选型?
    点击上方关注我,选择“置顶或者星标”作者:麦田里的老农来源:https:zhuanlan.zhihu.comp37964096小编公司有一 ... [详细]
  • 目录摘要SQL的现在NoSQL,NotOnlySQL要分布式,也要SQL总结引用摘要毫不夸张的说,关系数据库是企业软件系统的核心,企业形形色色信息行为的背后,都有关系数据库的支撑。 ... [详细]
  • 统一知识图谱学习和建议:更好地理解用户偏好
    本文介绍了一种将知识图谱纳入推荐系统的方法,以提高推荐的准确性和可解释性。与现有方法不同的是,本方法考虑了知识图谱的不完整性,并在知识图谱中传输关系信息,以更好地理解用户的偏好。通过大量实验,验证了本方法在推荐任务和知识图谱完成任务上的优势。 ... [详细]
  • 深入理解Java虚拟机的并发编程与性能优化
    本文主要介绍了Java内存模型与线程的相关概念,探讨了并发编程在服务端应用中的重要性。同时,介绍了Java语言和虚拟机提供的工具,帮助开发人员处理并发方面的问题,提高程序的并发能力和性能优化。文章指出,充分利用计算机处理器的能力和协调线程之间的并发操作是提高服务端程序性能的关键。 ... [详细]
  • PHP组合工具以及开发所需的工具
    本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
  • 程序员如何选择机械键盘轴体?红轴和茶轴对比
    本文介绍了程序员如何选择机械键盘轴体,特别是红轴和茶轴的对比。同时还介绍了U盘安装Linux镜像的步骤,以及在Linux系统中安装软件的命令行操作。此外,还介绍了nodejs和npm的安装方法,以及在VSCode中安装和配置常用插件的方法。最后,还介绍了如何在GitHub上配置SSH密钥和git的基本配置。 ... [详细]
  • SQL Server 2008 到底需要使用哪些端口?
    SQLServer2008到底需要使用哪些端口?-下面就来介绍下SQLServer2008中使用的端口有哪些:  首先,最常用最常见的就是1433端口。这个是数据库引擎的端口,如果 ... [详细]
  • 博客_2018年博客总结
    本文由编程笔记#小编为大家整理,主要介绍了2018年博客总结相关的知识,希望对你有一定的参考价值。前言     ... [详细]
  • 前面刚有AWS开战MongoDB,双方“隔空互呛”,这厢又曝出2亿+简历信息泄露——MongoDB的这场开年似乎“充实”得过分了些。长期以来,作为“最受欢迎的NoSQL数据库”,M ... [详细]
  • 1print过程procprint<data数据集名><选项>;*label指定打印输出标签noobs制定不显示观测序号*by变量名1< ... [详细]
  • 数据库基本介绍
    1、数据库基本知识概念:数据库:database(DB),是一种存储数据的仓库数据库是根据数据结构组织、存储和 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了记录一次MySQL两千万数据的大表优化解决过程,提供三种解决方案相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Qt提供了QtSql模块来提供平台独立的基于SQL的数据库操作。这里我们所说的“平台独立”,既包括操作系统平台,有包括各个数据库平台。另外, ... [详细]
author-avatar
才客caike
才客,优质人才的私人职业顾问。一人一岗,专业专注!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有