国内外个人免费云服务器推荐 liunx服务器搭建与管理( 四 )


自从你的网站支持了动态能力,免不了要和数据库打交道,但随着用户的增长,你发现数据库的查询速度越来越慢 。
这个时候,你需要:
数据库索引技术想想你手上有一本数学教材,但是目录被人给撕掉了,现在要你翻到讲三角函数的那一页,你该怎么办?
没有了目录,你只有两种办法,要么一页一页的翻,要么随机翻,直到找到三角函数的那一页 。
对于数据库也是一样的道理,如果我们的数据表没有“目录”,那要查询满足条件的记录行,就得全表扫描,那可就恼火了 。所以为了加快查询速度,得给数据表也设置目录,在数据库领域中,这就是索引 。
一般情况下,数据表都会有多个字段,那根据不同的字段也就可以设立不同的索引 。
索引的分类主键索引聚集索引非聚集索引主键我们都知道,是唯一标识一条数据记录的字段(也存在多个字段一起来唯一标识数据记录的联合主键),那与之对应的就是主键索引了 。
聚集索引是指索引的逻辑顺序与表记录的物理存储顺序一致的索引,一般情况下主键索引就符合这个定义,所以一般来说主键索引也是聚集索引 。但是,这不是绝对的,在不同的数据库中,或者在同一个数据库下的不同存储引擎中还是有不同 。
聚集索引的叶子节点直接存储了数据,也是数据节点,而非聚集索引的叶子节点没有存储实际的数据,需要二次查询 。
索引的实现原理索引的实现主要有三种:
B+树哈希表位图其中,B+树用的最多,其特点是树的节点众多,相较于二叉树,这是一棵多叉树,是一个扁平的胖树,减少树的深度有利于减少磁盘I/O次数,适宜数据库的存储特点 。
哈希表实现的索引也叫散列索引,通过哈希函数来实现数据的定位 。哈希算法的特点是速度快,常数阶的时间复杂度,但缺点是只适合准确匹配,不适合模糊匹配和范围搜索 。
位图索引相对就少见了 。想象这么一个场景,如果某个字段的取值只有有限的少数几种可能,比如性别、省份、血型等等,针对这样的字段如果用B+树作为索引的话会出现什么情况?会出现大量索引值相同的叶子节点,这实际上是一种存储浪费 。
位图索引正是基于这一点进行优化,针对字段取值只有少量有限项,数据表中该列字段出现大量重复时,就是位图索引一展身手的时机 。
所谓位图,就是Bitmap,其基本思想是对该字段每一个取值建立一个二进制位图来标记数据表的每一条记录的该列字段是否是对应取值 。
索引虽好,但也不可滥用,一方面索引最终是要存储到磁盘上的,无疑会增加存储开销 。另外更重要的是,数据表的增删操作一般会伴随对索引的更新,因此对数据库的写入速度也是会有一定影响 。
你的网站现在访问量越来越大了,同时在线人数大大增长 。然而,大量用户的请求带来了后端程序对数据库大量的访问 。渐渐的,数据库的瓶颈开始出现,无法再支持日益增长的用户量 。老板再一次给你下达了性能提升的任务 。
缓存技术 && 布隆过滤器从物理CPU对内存数据的缓存到浏览器对网页内容的缓存,缓存技术遍布于计算机世界的每一个角落 。
面对当前出现的数据库瓶颈,同样可以用缓存技术来解决 。
每次访问数据库都需要数据库进行查表(当然,数据库自身也有优化措施),反映到底层就是进行一次或多次的磁盘I/O,但凡涉及I/O的就会慢下来 。如果是一些频繁用到但又不会经常变化的数据,何不将其缓存在内存中,不必每一次都要找数据库要,从而减轻对数据库对压力呢?


以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: