• QlikSense系列(3)——QlikSense建立数据模型


    QlikSense管理数据在帮助中写的比较清楚

    https://help.qlik.com/zh-CN/sense/3.1/Subsystems/Hub/Content/LoadData/load-data.htm

    下面主要就利用脚本生成数据模型遇到的难题进行记录:

    1. 连接SQLServer取数发生的多线程问题。

    这种情况导致用户运行脚本时会锁定表,导致其他用户无法对这个表进行查询操作,解决的方法是在表名后面加with(nolock)

    with(nolock)的介绍

    大家在写查询时,为了性能,往往会在表后面加一个nolock,或者是with(nolock),其目的就是查询是不锁定表,从而达到提高查询速度的目的。
    当同一时间有多个用户访问同一资源,并发用户中如果有用户对资源做了修改,此时就会对其它用户产生某些不利的影响,例如:
    1)脏读
    一个用户对一个资源做了修改,此时另外一个用户正好读取了这条被修改的记录,然后,第一个用户放弃修改,数据回到修改之前,这两个不同的结果就是脏读。

    2)不可重复读
    一个用户的一个操作是一个事务,这个事务分两次读取同一条记录,如果第一次读取后,有另外用户修改了这个数据,然后第二次读取的数据正好是其它用户修改的数据,这样造成两次读取的记录不同,如果事务中锁定这条记录就可以避免。

    3)幻读
    指用户读取一批记录的情况,用户两次查询同一条件的一批记录,第一次查询后,有其它用户对这批数据做了修改,方法可能是修改,删除,新增,第二次查询时,会发现第一次查询的记录条目有的不在第二次查询结果中,或者是第二次查询的条目不在第一次查询的内容中。

    NOLOCK 语句执行时不发出共享锁,允许脏读 ,等于 READ UNCOMMITTED事务隔离级别 。nolock确实在查询时能提高速度,但它并不是没有缺点的,起码它会引起脏读、只适用与select查询语句。 在一些不需要考虑脏读的场合会用到,例如当用户在论坛发广告贴时删除其所有发帖,这个查询就不怕脏读,全删,或者漏一个正在发的都不是问题。

    转载自:https://www.cnblogs.com/zhoading/p/8384255.html

  • 相关阅读:
    双管齐下采用压缩传输加快网页显示速度
    努力奋斗第一天
    cefSharp在XP下使得程序崩溃记录
    SVN记住用户名和密码后如何修改
    如果把编程语言比作武器
    cefSharp 设置运行时系统语言
    C# 检测机器是否有声卡设备
    C# 中判断程序是否启动使用Mutex使用异常
    chm 字体修改
    最近两年的生活
  • 原文地址:https://www.cnblogs.com/zhangleisanshi/p/9173104.html
Copyright © 2020-2023  润新知