AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-3984

Fatherjack's questions

Martin Hope
Fatherjack
Asked: 2009-10-15 05:03:04 +0800 CST

什么时候索引不值得更新

  • 3

是否有可接受的读写比率使索引值得,或者它是否比这更简单?

我正在使用这个:

WITH    UnusedIndexQuery ( Object_ID, ObjectName, IndexName, Index_ID, Reads, Writes, Rows )
          AS ( SELECT
                s.object_id ,
                objectname = OBJECT_NAME(s.OBJECT_ID) ,
                indexname = i.name ,
                i.index_id ,
                reads = user_seeks + user_scans + user_lookups ,
                writes = user_updates ,
                p.rows
               FROM
                sys.dm_db_index_usage_stats s
               JOIN 
                sys.indexes i
               ON
                i.index_id = s.index_id
                AND s.OBJECT_ID = i.OBJECT_ID
               JOIN 
                sys.partitions p
               ON
                p.index_id = s.index_id
                AND s.OBJECT_ID = p.OBJECT_ID
               WHERE
                OBJECTPROPERTY(s.OBJECT_ID, 'IsUserTable') = 1
                AND s.database_id = DB_ID()
                AND i.type_desc = 'nonclustered'
                AND i.is_primary_key = 0
                AND i.is_unique_constraint = 0
                AND p.rows > 10000
             ),
        IndexSizes ( schemaname, tablename, object_id, indexname, index_id, indextype, indexsizekb, indexsizemb, indexsizegb )
          AS ( SELECT
                sys_schemas.name AS SchemaName ,
                sys_objects.name AS TableName ,
                sys_objects.[object_id] AS object_id ,
                sys_indexes.name AS IndexName ,
                sys_indexes.index_id AS index_id ,
                sys_indexes.type_desc AS IndexType ,
                partition_stats.used_page_count * 8 AS IndexSizeKB ,
                CAST(partition_stats.used_page_count * 8 / 1024.00 AS DECIMAL(10,
                                                              3)) AS IndexSizeMB ,
                CAST(partition_stats.used_page_count * 8 / 1048576.00 AS DECIMAL(10,
                                                              3)) AS IndexSizeGB
               FROM
                sys.dm_db_partition_stats partition_stats
               INNER JOIN sys.indexes sys_indexes
               ON
                partition_stats.[object_id] = sys_indexes.[object_id]
                AND partition_stats.index_id = sys_indexes.index_id
                AND sys_indexes.type_desc <> 'HEAP'
               INNER JOIN sys.objects sys_objects
               ON
                sys_objects.[object_id] = partition_stats.[object_id]
               INNER JOIN sys.schemas sys_schemas
               ON
                sys_objects.[schema_id] = sys_schemas.[schema_id]
                AND sys_schemas.name <> 'SYS'
             )
    SELECT
        [IndexSizes].[tablename] ,
        [IndexSizes].[indexname] ,
        [IndexSizes].[indextype] ,
        [IndexSizes].[indexsizekb] ,
        [IndexSizes].[indexsizemb] ,
        [IndexSizes].[indexsizegb] ,
        UnusedIndexQuery.Reads ,
        UnusedIndexQuery.Writes ,
        CAST(CASE WHEN [Reads] = 0 THEN 1
                  ELSE [Reads]
             END / CASE WHEN [Writes] = 0 THEN 1
                        ELSE writes
                   END AS NVARCHAR(8)) + ':1' AS [Benefit Ratio (Read:Write)] ,
        UnusedIndexQuery.[Rows]
    FROM
        UnusedIndexQuery
    INNER JOIN IndexSizes
    ON  UnusedIndexQuery.object_id = IndexSizes.object_id
        AND UnusedIndexQuery.index_id = IndexSizes.index_id
    ORDER BY
        CASE WHEN [Reads] = 0 THEN 1
             ELSE [Reads]
        END / CASE WHEN [Writes] = 0 THEN 1
                   ELSE writes
              END ,
        reads ,
        [Writes] DESC ,
        [indexsizemb] DESC

了解我的索引的利益状态。

在结果的两端,我很清楚 - 1,000,000 次读取和 0 次写入 = 良好的索引以加快数据检索,1,000,000 次写入和 0 次读取意味着我们正在维护一个零引用索引。
我不确定的是活动在哪里显示为更平衡 - 我在哪里进行削减并开始降低索引?

谢谢

乔纳森

sql-server
  • 2 个回答
  • 167 Views
Martin Hope
Fatherjack
Asked: 2009-09-18 05:35:46 +0800 CST

针对不同实例上的表执行脚本

  • 0

场景
解释起来非常复杂,但是我有一个过程可以更新 instance1 上两个数据库中的数据,并且作为该过程的一部分(出于相关原因,它是一个游标),它需要对满足某些条件的 instance2 上的数据库进行更新。如果将引用 instance2 的代码行更改为本地实例,则该过程将在不到一分钟的时间内运行。如果将其设置为引用实例 2 上的正确位置,则该过程每条记录需要 30-40 秒(我们从未让它完成)。

历史记录 (今天早上)
查看估计的执行计划,在实例 2 上更新单个记录的代码是对 10 万条记录深度的表进行远程扫描。

我把这个从

Update C set col1 = @val1, col2 = @val2 where col2 = @ID

至

Execute ('Update C set col1 = @val1, col2 = @val2 where col2 = @ID') as user1 at Instance2

其中 Instance2 是一个链接服务器,而 user1 是一个在链接服务器上启用了模拟功能的 sql 登录名。这是为了让更新过程可以利用 col2 上的聚集索引,从而避免表扫描。

问题
我们现在遇到安全/身份验证错误,脚本失败

消息 15274,级别 16,状态 1,过程“procname”,第 263 行

对远程服务器的访问被拒绝,因为当前的安全上下文不受信任。

谁能告诉我我需要配置什么才能执行此更新吗?或者,有没有更好的方法可以让我更新以使用 Instance2 上的表上的索引?从我的知识表中,远程查询不允许提示...?

非常感谢

乔纳森

sql-server
  • 2 个回答
  • 1585 Views
Martin Hope
Fatherjack
Asked: 2009-09-04 05:39:30 +0800 CST

SQL 2008 报告管理器不工作

  • 0

我有一个带有 SSRS 的 SQL 2008 开发人员版,并且报表管理器只能从本地计算机上使用。如果我尝试从任何其他机器访问它,我的域 u/name 和 pwd 会受到 3 次挑战,然后屏幕保持空白。

我已经对一些配置文件(原件复制出来)进行了更改,以便让第 3 方应用程序运行,但现在已卸载,配置文件全部恢复为原版(原件复制回)

我觉得它与身份验证有关,但被卡住了......

欢迎任何建议

乔纳森

sql-server-2008 ssrs
  • 1 个回答
  • 479 Views
Martin Hope
Fatherjack
Asked: 2009-06-02 06:45:23 +0800 CST

xp_logininfo 返回排序规则错误

  • 2

我有一个生产 SQL Server,它的系统数据库设置为 Latin1_General_CI_AS 但并非所有用户数据库都相同,有些是使用 SQL_Latin1_General_CP1_CI_AS 创建的,还有其他几个 - 它们是作为第 3 方应用程序安装等的一部分创建的。

在这些数据库中运行 Exec xp_logininfo 会导致典型的 COLLATION 错误。

有没有办法解决?(为备用排序规则复制和重新编码 xp_logininfo 版本?将所有数据库更改为相同的排序规则并遭受应用程序崩溃的后果 ..?)

所有的想法都表示赞赏。


编辑#1 我正在尝试审查并最终转向管理安全性和用户/登录。目前,如果我运行:

use DB1  
GO  
exec xp_logininfo  
go  
exec xp_logininfo 'domain\groupname'  
go  
exec xp_logininfo 'domain\username'  
go  

我得到 3 个数据集,1 个所有用户的列表,2 个组访问的详细信息和 3 个(凭借组成员身份)指定登录如何访问 DB1 中的数据

但是,如果我执行:

use DB2  
GO  
exec xp_logininfo   
go  
exec xp_logininfo 'domain\groupname'  
go  
exec xp_logininfo 'domain\username'  
go  

我得到 3 x '无法解决“SQL_Latin1_General_CP1_CI_AS”之间的排序规则冲突......'

DB1 具有 Latin1_General_CI_AS 排序规则
DB2 具有 SQL_Latin1_General_CP1_CI_AS 排序规则

所有系统数据库都是 Latin1_General_CI_AS

希望这能解释更多...

如果有人知道一个好的安全审计工具,那么这就是我要去的地方。我有两个简单的问题:
1 - 谁可以访问这个数据库?
2 - 该用户可以访问哪些数据库?

sql-server sql-server-2005
  • 3 个回答
  • 1749 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve