迅闻网
让更多人看到你

数据库索引怎么建立(数据库索引是怎么实现的)

  数据库索引怎么建立

1.数据库中的索引分为两种类型,分别是普通索引、唯一索引。下面让我们来分别介绍一下这…
2.第一种是普通索引,CREATEINDEXindexNameONmytable(…
3.第二种是唯一索引,它与普通索引是类似的,但也存在不同之处,不同之处在于索引列的值…
4.以上三张图分别为创建索引、修改表结构、创建表时直接指定的数据。而且还有四种方式来…
5.第一种方式:ALTERTABLEtbl_nameADDPRIMARYKEY(…

数据库

数据库索引是怎么实现的

一个产品功用开发测试都正常,发布上线后也正常,但是过一段后,如果有个活动或流量一大程序就忽然卡了,也有或许流量正常也没搞活动,但是过一段时间后程序响应越来越慢,这个时分一般都要花很大精力去排查原因,最终发现是数据库查询没有索引导致的。流量大或数据量添加后会导致恳求变慢,加上索引就正常了。
在小程序云开发的数据库场景下,我们会思考为什么会出现这样的问题?为什么用户总是会忘记加索引?能不能让用户无需关心这个问题,数据库主动加上索引?
业界计划及其问题
针对这个问题,业界一般选用的是全量索引的计划:经过给一切的字段加单字段索引,引导用户主动添加多字段索引,然后实现保证一切的查询都有索引。但这样价值是会有很多的冗余索引,占用了很多的磁盘空间,而且,一些多字段的场景下,依然需求用户参与。这样的计划不能满足云开发Cloudbase的需求。
云开发数据库主动化索引
在这个问题上,腾讯云和微信联合推出的小程序云开发,就做出了比较活跃的应对办法。在其对事务进行剖析后,提出了自己的解决计划——剖析数据并主动树立索引。针对体系中查询较慢的用户恳求,主动剖析出最佳树立索引的方法,并基于此树立索引,然后掩盖了单字段索引和多字段索引的情况。
想要了解主动树立索引,就要了解怎么手动树立索引:关于单字段索引,树立起来比较简略,不管升序还是降序都是相同的。但关于多字段组合索引时,会有各种方法来树立索引,比方,三个字段的索引,就会受约束于索引是否掩盖了三个不同的字段、字段相应的升降序是否匹配,如果不匹配,或许索引就没有作用。
正因为加好索引并不简略,也证明主动加索引势在必行。而要做好主动添加索引遇到的首要问题有:
怎么尽量削减索引个数防止影响写入功用和磁盘消耗过多。怎么防止添加索引导致的锁表影响正常的用户数据查询。怎么尽量躲避加索引触发不知道问题。主动添加的索引怎么主动删除。针对这些问题,小程序云开发的解决计划是:经过筛选出耗时超越一定阈值的查询句子,然后取得需求进行优化的数据库查询,并依据数据库索引的前缀匹配规则,按照最少创建索引数量的原则,添加相应的索引,尽量让索引掩盖到一切的查询句子。
为了防止添加索引导致的锁表影响用户的数据查询,小程序云开发在具体添加索引的时分,选用了异步添加索引的方法,这是云开发数据库的一个要害能力。另外,经过约束单个数据库添加索引的频率和数量来躲避不知道风险,经过剖析线上数据优化主动索引添加算法。最终会定期筛选那些长时间没有被查询射中的索引,对其进行删除,确保体系不会存在太多的冗余索引影响功用。
上述主动索引的整个进程关于用户来说,都是不可见且无感知的。不过,在实践的上线进程中,大盘的数据查询整体耗时削减了50%,用户侧的体会也发现程序速度忽然变快了。
总结
主动索引的计划帮助云开发Cloudbase解决了大多数的数据库查询较慢的问题,但程序总有掩盖不到的部分,关于这一部分,小程序云开发表明:后续会在开发阶段提示添加相应的索引,以及提供慢查询日志导出和自定义告警功用,让用户感知到问题,然后在事务逻辑上进行优化。

未经允许不得转载:迅闻网 » 数据库索引怎么建立(数据库索引是怎么实现的)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

迅闻网-让更多人看到你

登录/注册返回首页