zoukankan      html  css  js  c++  java
  • Sql点滴

    数据库集群: 将多个服务器组成一组集群,将客户端负载分发到不同服务器上,随着应用程序负载的增加,只需要将新的服务器添加到集群即可。

    集群的存在意义是为了保证高可用、数据安全、扩展性以及负载均衡。

    数据库集群的两种形式:

    Share-Disk架构是通过多个服务器节点共享一个存储来实现数据库集群。

    Share-Nothing

    查询性能调优涉及到的技术非常广泛,但是我们一般可以把它大致分为以下几个层次:

    1.减少数据访问。相关的技术就是建立合适的索引,将全表扫描、索引扫描(scan)等耗时的操作转化为索引查找(seek)。建立正确的索引,能让数据库查询性能提升100-1000倍甚至更高,就好比一本非常厚的词典,如果没有任何索引,你要查一个东西,那可是相当费尽,需要整本书查一遍,有索引就可以直接根据索引定位了。这是最重要的改善性能的途径。

    2.减少返回的数据。在网络中传输数据,带宽是有限的,如果能按需提取最少量的数据,会起到不错的作用。这里需要注意的是,在SQL中,不要出现select *,而是需要什么字段,就提取什么字段。

    3.减少与数据库交互次数。网络资源有限,显然,频繁与数据库交互,也是制约性能的一个因素。一个良好的建议就是,使用存储过程,或者批处理语句,这样能减少与数据库的交互,提升一部分性能。

    4.减少CPU的负荷。这里,主要是使用缓存计划。在查询中,尽量使用参数化的查询。这样的话,数据库会对查询参数进行缓存,从而复用查询计划。

    5.提升硬件性能。这是最后一招了,如果其他方面都已经做得非常不错了,性能瓶颈在CPU,内存和磁盘上,那采取提升硬件性能的方案就会显得比较合适了,否则还是先去优化其他的地方吧。

    以上5个层次的优化带来的性能改善,是依次下降的,是一个倒置的金字塔。

    索引优化:

    SET NOCOUNT { ON | OFF }

    ON : 不返回计数(表示受 Transact-SQL 语句影响的行数)。

    OFF: 返回计数。

    即使当SET NOCOUNT 为 ON 时,也更新@@ROWCOUNT 函数。

    当SET NOCOUNT 为ON 时,将不给客户端发送存储过程中的每个语句的DONE_IN_PROC 信息。当使用Microsoft SQL Server 提供的实用工具执行查询时,在Transact-SQL 语句(如 SELECT、INSERT、UPDATE 和 DELETE)结束时将不会在查询结果中显示"nn rows affected"。

    如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。

    SET NOCOUNT 设置是在执行或运行时设置,而不是在分析时设置。

    权限:SET NOCOUNT 权限默认授予所有用户。

    结论:我们应该在存储过程的头部加上SET NOCOUNT ON 这样的话,在退出存储过程的时候加上SET NOCOUNT OFF这样的话,以达到优化存储过程的目的。

    可以对视图进行修改删除操作:

    1. view的字段只涉及一个表。


        2. 如果涉及多个表的话,被(涉及到的)view列所映射table列(或列的组合)必须是有主健约束,且修改时,修改的字段只能为组成视图的外键对应的其中一张基表信息,即一对多关系时,多的那一张表.


        3. 强制执行,方法是加上hint /*+ BYPASS_UJVC */

        例:

        俩表关联:A表与B表一对一,那么A表与B表都可以改,但是只能改其中一张基表的数据.

        俩表关联:A表与B表一对多,那么只能改B表的字段.

        三表关联:A表与B表与C表一对一对一,那么都可以改,但是只能改其中一张基表的数据.

        三表关联:A表与B表一对多,B表与C表一对多,那么只能改C表字段的数据.

        三表关联:A表与B表一对多,B表与C表多对一,实际上就是多对多关系,那么全部都不能改.

  • 相关阅读:
    大话位运算
    Docker部署jar包
    linux系统备份mysql数据库
    关于Centos7 firewalld防火墙开放端口后仍不能访问ftp和nginx的问题解决
    MySql查询当天、本周、本月、本季度、本年的数据
    c#模拟线性回归
    监控服务器配置(五)-----Redis_exporter安装配置
    监控服务器配置(二)-----Grafana安装配置
    监控服务器配置(三)-----Node_exporter安装配置
    js网页唤起支付宝进行支付
  • 原文地址:https://www.cnblogs.com/leyoyo/p/4335609.html
Copyright © 2011-2022 走看看