zoukankan      html  css  js  c++  java
  • 索引的力量

    一直对数据库的优化一窍不通,大家谈论最多应该是怎样从 SQL 查询语句和索引下手去优化。对于索引,很多高手都写过很多文章,看来看去也没悟出什么东西,不过,今天我修改了数据表的几个主键(可以认为就是聚焦索引)并且添加了一些非聚焦索引,SQLServer 的性能立刻提高了上去。

    对于 Users 表,原先是把主键设置为 UserID(自增字段)字段上,通过事件跟踪器,发现对于 Users 表的查询比较耗费资源(可以从 CPU、Reads、Duration这三相值来判断),而且所有的查询基本上都是对 Users 表的 name 来查询的,即 SELECT * FROM users WHERE name = 'xxx',既然WHERE后边跟的是 name,就应该把聚焦索引设置到 name 字段上,并且 name 字段是不重复的,所以可以这样修改。修改前的耗费忘了记录了,修改之后的耗费大大降低了,CPU、Reads、Duration分别为0、9、0。如果WHERE后面跟的字段是可重复的,就不能作为聚焦索引,这时可以为该字段添加非聚焦索引。

    按照这个思路来优化其他表。

    select count(*) from mark where name = 'xxx'
    优化前
    CPU / Reads / Duration(下同)
    15 / 1401 / 16
    32 / 1422 / 30
    31/  1422/  46
    优化后: 对mark表加入name以及infoid的非聚焦索引
    0 /  38 /  0
    15 /  39 /  16
    0 /  12 /  0
    0 /  81 /  0
    0 /  37 /  30
    0 /  12 /  0

    select * from comment where infoid = '12345'
    优化前:
    0 / 644 / 0
    15 / 664 / 16
    优化后:comment表给infoid加非聚焦索引
    0 / 158 / 0
    0 / 158 / 0
    16 / 42 / 16
    0 / 42 / 0

    对所有表都经过类似的优化后,性能立刻提升了上去,CPU 从原先的 95% 左右降低到 60% 左右。由此可见,对于表的设计应该非常重视主键的选择,不要为每个表都来一个 int 类型的自增字段作为主键,另外就是跟踪数据库查询,根据具体的查询来建立非聚焦索引。

    不清楚 ASP.NET 到底能承受多大的页面浏览量,虽然这个问题问的太宽泛,但总体印象上,对 ASP.NET 的性能有所怀疑。大型 Web 好像也没有几个用 ASP.NET 做的,dangdang 网是的,圣诞节的时候去访问,老是出现页面打不开的故障;DoNews 也是,不过,也是经常出现那非常熟悉的错误页面,至于 MySpace,没有太多关注。

    看到关于豆瓣的一组数据,很是羡慕:一台Web服务器运行 Lighttpd,每天处理2500万个request,峰值每秒处理1000个request; 一台应用服务器运行Python,每天处理500万PV; 数据库服务器运行MySQL,负载情况没有介绍。

    对于特别注重速度的web2.0年代里,觉得 Python、PHP、ROR 这些轻量级的框架来做 Web 开发将更加适合,再加上免费的 Linux 平台以及 MySQL数据库,最理想不过了。微软也搞了一个 MVC 框架,呵呵,是不是觉察到了一些危机了呢?

  • 相关阅读:
    一个字符串(文本)中括号匹配问题
    完整版链表反转,包括链表类的构建
    几种常见的排序方法
    celery开启worker报错django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE o
    ubuntu18.10搜狗输入法的安装
    github学习笔记
    [TYVJ] P1049 最长不下降子序列
    [TYVJ] P1065 津津的储蓄计划
    [TYVJ] P1044 数字三角形
    [TYVJ] P1006 ISBN
  • 原文地址:https://www.cnblogs.com/caca/p/1047780.html
Copyright © 2011-2022 走看看