mysql创建索引

MySql性能优化

拜拜、爱过 提交于 2020-01-17 14:11:51
` ` ` bash show variables like '%max_connections%' ; show variables like '%max_user_connections%' ; ` show variables like '%max_connections%' ; show variables like '%max_user_connections%' ; ` ` MySQL性能 最大数据量 最大并发数 查询耗时0.5秒 实施原则 数据表设计 数据类型 避免空值 text类型 索引优化 索引分类 优化原则 SQL优化 分批处理 不做列运算 避免Select * 操作符<>优化 OR优化 IN优化 LIKE优化 JOIN优化 LIMIT优化 其他数据库   博主负责的项目主要采用阿里云数据库MySQL,最近频繁出现慢SQL告警,执行时间最长的竟然高达5分钟。导出日志后分析,主要原因竟然是 没有命中索引和没有分页处理 。其实这是非常低级的错误,我不禁后背一凉,团队成员的技术水平亟待提高啊。改造这些SQL的过程中,总结了一些经验分享给大家,如果有错误欢迎批评指正。 MySQL性能 最大数据量    抛开数据量和并发数,谈性能都是耍流氓 。MySQL没有限制单表最大记录数,它取决于操作系统对文件大小的限制。 文件系统 单文件大小限制 FAT32 最大4G NTFS

Elasticsearch的一些基础使用

南楼画角 提交于 2020-01-16 13:32:39
以前整理了一份关于工作时elasticsearch的简单日志,有的时候偶尔能用到,放到csdn上,这个只适合用过了突然忘了的时候查找 put 更新 post 提交 get 查询 delete 删除 explain GET /gb/tweet/_validate/query?explain 查询不合法原因 query 评分查询 filter 过滤查询 match 分词查询 match_phrase 包含所有分词的查询 slop :1 可以少匹配一个(或多个)分词 multi_match 多字段匹配,满足一个即可 match_all 查询所有 type: best_fields 完全匹配评分比较高 type: most-fields 多字段匹配评分较高 type: cross_fields 分词词汇分配到不同字段 term 完全匹配 "value"可以查数组 terms 多关键词完全匹配 bool 组合查询 must[] 必须匹配 must_not 必须不匹配 should 满足这些语句中的任意语句,将增加 _score ,否则,无任何影响。它们主要用于修正每个文档的相关性得分 fuzzy 模糊查询 value 查询关键字 boost 查询权值,默认1.0 min_similarity:设置匹配的最小相似度,默认值0.5 prefix_length:指明区分词项的共同前缀长度,默认是0

MySQL 5.6 Online DDL

社会主义新天地 提交于 2020-01-16 09:01:28
一 .Fast index Creation MySQL 5.5和更高版本并且MySQL 5.1 innodb plugin支持 Fast index Creation ,对于之前的版本对于索引的添加或删除这类DDL操作,MySQL数据库的操作过程为如下: (1)首先创建新的临时表,表结构通过命令ALTAR TABLE新定义的结构 (2)然后把原表中数据导入到临时表 (3)删除原表 (4)最后把临时表重命名为原来的表名 上述过程我们不难发现,若我们对一张大表进行索引的添加或者删除,需要很长的时间,致命的是若有大量的访问请求,意味着无法提供服务。 innodb存储引擎从1.0.x版本开始支持Fast index Creation(快速索引创建)。简称FIC。对于辅助索引的创建,会对创建索引的表加一个S锁。在创建的过程中,不需要重建表,因此速度有明显提升。对于删除辅助索引innodb存储引擎只需要更新内部视图,并将辅助索引的空间标记为可用,同时删除MySQL 数据库内部视图上对该表的索引定义即可。特别需要注意的时,临时表的创建路径是通过参数tmpdir设置的。必须确保tmpdir有足够的空间,否则将会导致辅助索引创建失败。由于在创建辅助索引时加的是S锁,所以在这过程中只能对该表进行读操作,若有事务需要对该表进行写操作,那么数据库服务同样不可用。 需要注意的是,FIC方式只限定于辅助索引

SQL语句的优化

依然范特西╮ 提交于 2020-01-16 06:57:47
怎么加快查询速度,优化查询效率,主要原则就是应尽量避免全表扫描,应该考虑在where及order by 涉及的列上建立索引。   建立索引不是建的越多越好,原则是:   第一:一个表的索引不是越多越好,也没有一个具体的数字,根据以往的经验, 一个表的索引最多不能超过6个, 因为索引越多,对update和insert操作也会有性能的影响,涉及到索引的新建和重建操作。   第二:建立索引的方法论为: 多数查询经常使用的列; 很少进行修改操作的列; 索引需要建立在数据差异化大的列上   利用以上的基础我们讨论一下如何优化sql.   1、sql语句模型结构优化指导     a. ORDER BY + LIMIT组合的索引优化       如果一个SQL语句形如:SELECT [column1],[column2],…. FROM [TABLE] ORDER BY [sort] LIMIT [offset],[LIMIT];       这个SQL语句优化比较简单,在[sort]这个栏位上建立索引即可。     b. WHERE + ORDER BY + LIMIT组合的索引优化       如果一个SQL语句形如:SELECT [column1],[column2],…. FROM [TABLE] WHERE [columnX] = [VALUE] ORDER BY [sort]

SQL语句优化

ε祈祈猫儿з 提交于 2020-01-15 23:57:03
怎么加快查询速度,优化查询效率,主要原则就是应尽量避免全表扫描,应该考虑在where及order by 涉及的列上建立索引。   建立索引不是建的越多越好,原则是:   第一:一个表的索引不是越多越好,也没有一个具体的数字,根据以往的经验, 一个表的索引最多不能超过6个, 因为索引越多,对update和insert操作也会有性能的影响,涉及到索引的新建和重建操作。   第二:建立索引的方法论为: 多数查询经常使用的列; 很少进行修改操作的列; 索引需要建立在数据差异化大的列上   利用以上的基础我们讨论一下如何优化sql.   1、sql语句模型结构优化指导     a. ORDER BY + LIMIT组合的索引优化       如果一个SQL语句形如:SELECT [column1],[column2],…. FROM [TABLE] ORDER BY [sort] LIMIT [offset],[LIMIT];       这个SQL语句优化比较简单,在[sort]这个栏位上建立索引即可。     b. WHERE + ORDER BY + LIMIT组合的索引优化       如果一个SQL语句形如:SELECT [column1],[column2],…. FROM [TABLE] WHERE [columnX] = [VALUE] ORDER BY [sort]

oracle练习-day03

China☆狼群 提交于 2020-01-15 22:34:52
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Oracle day03 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 01 .创建表空间 - - 删除表空间 drop tablespace heima38_space including contents and datafiles; - - 创建表空间 create tablespace heima38_space - - 表空间名称 datafile 'c:\heima.dbf' - - 表空间的对应的文件路径 size 10M - - 表空间初始化的大小 autoextend on - - 自动增长 next 10M - - 每次增长 10M - - 02 .创建用户赋权限 create user heima38 identified by heima38; - - 为用户授权 oracle角色权限 connect :连接数据库权限 resource:数据库基本操作的权限 dba:数据库管理员的权限 - - 为heima38授予dba权限 grant dba to heima38; - - 实现的项目中为heima授予 grant connect

Oracle索引大全

隐身守侯 提交于 2020-01-15 20:09:29
文档结构如下: 前言: Oracle 官方文档对索引的描述真是弱透了,对索引的说明就是一坨……,support也没有很好的资料,下面还是用的官方上的内容经过自己的整理加上网上的资料;至于为什么用索引,以及索引的重要性,相信大家都知晓;如果把数据库所有的表比如成一本书,那么,索引就是书的目录,你不可能每一次查看书的内容从第一页读到最后一页,不用目录吧!! 索引类型: 索引是与表和群集关联的可选结构,可以使SQL查询对表执行得更快。正如本手册中的索引可以帮助您更快地找到信息(没有索引)一样,Oracle数据库索引提供了对表数据的更快访问路径。您可以使用索引而无需重写任何查询。结果是相同的,但是可以更快地看到它们。 Oracle数据库提供了几种索引方案,这些方案提供了互补的性能功能。这些是: B树索引:默认索引和最常见索引 B树集群索引:专门为集群定义 哈希集群索引:专门为哈希集群定义 全局和局部索引:与分区表和索引有关 反向键索引:对Oracle Real Application Clusters应用程序最有用 位图索引:紧凑;最适合具有少量值的列 基于函数的索引:包含函数/表达式的预先计算的值 域索引:特定于应用程序或盒带。 索引在逻辑上和物理上独立于关联表中的数据。作为独立的结构,它们需要存储空间。您可以创建或删除索引,而不会影响基表,数据库应用程序或其他索引。当您插入

MySQL数据库索引详解

蓝咒 提交于 2020-01-15 13:04:20
一、什么是索引:   索引是一个排序的列表,在这个列表中存储着索引值和包含这个值的数据所在行的物理地址,在数据十分庞大的时候,索引可以大大加快查询速度,这是因为使用索引后可以不用全表扫描来定位某行的数据,而是先通过索引表找到该行数据对应的物理地址然后访问相应的数据。   索引通过不断缩小想要获取数据的范围来筛选出最终想要的结果,同时把随机事件变成顺序事件,也就是说,有个这个机制我们可以总是用同一种查找方式来锁定数据;   索引实际就是一张表,该表保存了主键和索引字段,并指向实体表的记录,所以索引也是占了一大部分空间,不可能存储在内存中,因此索引往往都是以文件形式存储在我们的硬盘上。 二、索引的分类: 常见索引有主键索引、唯一索引、普通索引、全文索引和组合索引。 1、主键索引 主索引,根据pk_clolum(length)建立索引,不允许重复,不允许空值; ALTER TABLE 'table_name' ADD PRIMARY KEY pk_index('col'); 2、唯一索引 用来建立索引的列的值必须是唯一的,允许空值; ALTER TABLE ‘table_name' ADD UNIQUE index_name('col'); 3、普通索引 用表中的普通列构建的索引,没有任何限制; ALTER TABLE 'table_name' ADD INDEX index_name(

Mongodb 安装部署

时光毁灭记忆、已成空白 提交于 2020-01-15 12:10:30
一、简介 MongoDB 是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。 二、什么是mongodb 1.mongodb是有C++语言编写,是一个机遇分布式文件存储的开源数据库系统。 2.在高负载的情况下,随时添加更多的节点,可以保证服务器性能。 3.mongodb旨在为WEB应用提供可扩展的高性能数据存储解决方案。 4.mongodb将数据存储为一个文档,数据结构由键值(key=>value)对组成。 5.mongodb文档类似于json对象,字段值可以包含其他文档,数组及文档数组。 三、mongodb的优缺点 优点: 文档结构的存储方式,能够更便捷的获取数据 内置GridFS,支持大容量存储 海量数据下,性能优越 动态查询 全索引支持,扩展到内部对象和内嵌数组 查询记录分析 快速,就地更新 高效存储二进制大对象(照片,视频等等) 复制(副本集)和支持自动故障恢复

MongoDB索引

时光怂恿深爱的人放手 提交于 2020-01-15 02:01:29
索引是特殊的数据结构,它以易于遍历的形式存储部分集合数据集。索引存储特定字段或字段集的值,按字段值排序。 MongoDB的索引几乎与传统的关系型数据库索引一模一样,它的主键 _id 也是一个索引,MongoDB的数据按照 _id 的顺序存储在内存页与磁盘块上。但是, _id 与业务毫无关联,在业务相关的条件查询时,还是需要进行全表扫描才能找到对应页,效率并不高。 为了避免性能瓶颈,可以根据常用的查询建立索引 索引的值是按照一定的顺序排列的,使用索引键对文档进行排序效率非常高,只需要按照索引读取数据即可。 不过,使用索引也是有代价的,不仅会增加磁盘与内存的消耗,对于添加的每一个索引,每次写操作(插入、更新、删除)都会耗费更多时间,这是因为,数据发生变动时,还需要额外的开销更新索引。 文章目录 聚簇索引与非聚簇索引 MongoDB索引分类 主键索引 单字段索引 复合索引 复合索引与排序共用 唯一索引 复合唯一索引 去除重复 稀疏索引 TTL索引 全文索引 地理空间索引 索引优化 查询优化 写操作优化 聚簇索引与非聚簇索引 磁盘上的数据某一时刻只能有一种排序方式,而聚簇索引的特点是:索引顺序与数据存储顺序一致,所以聚簇索引只能有一个。 《数据库原理》中对聚簇索引的定义:聚簇索引的叶子节点是数据节点,非聚簇索引的叶子节点仍然是索引节点,只不过有指向对应数据块的指针。