Questions tagged «performance»

对系统是否运行良好以适合目标的评估。通常,性能是指系统随时间完成一个或一组操作的速度。


1
堆栈溢出可以在SQL Server Web Edition上运行吗?
我正在开始一项新的网络冒险,可能需要扩展到大量用户。 我对SQL Server Web版的SPLA许可充满信心,但想知道我是否需要考虑升级到Standard,Enterprise或DataCenter(肯定不会是这个)。 我知道一个人不应该在扩展之前就考虑扩展,但这会影响站点的架构和业务计划。 我知道处理器限制是每个物理处理器而不是线程,因此我不必担心。但是,某些镜像和备份功能会让我担心。SO是否依赖这些功能? tl; dr: 像Stack Overflow这样的网站可以在SQL Server Web上运行吗?维护和高可用性的哪些方面将无法实现?

3
SQL Server-多个运行总计
我有一个包含事务的基本表,我需要创建一个具有运行总计的表。我需要它们是每个帐户的,并且每个帐户还有一些运行总计(取决于交易类型),在其中,每个子帐户都有一些运行总计。 我的基本表具有以下字段(或多或少): AccountID | SubAccountID | TransactionType | TransactionAmount 考虑到我每个Account / TransactionType有大约4种类型的运行总计,每个Account / SubAccount / TransactionType有2种以上的运行总计,我有大约200万个帐户,每个大约有10个子帐户,而我的交易量约为1万笔每分钟(在最大负载下),您将如何做? 这也必须通过SQL作业异步运行,以创建聚合而又不属于事务本身。 我在这里使用游标非常费时-花费的时间太长。我真的很感激任何或多或少都相同的建议/文章。

2
PostgreSQL:在同一查询中重用复杂的中间结果
使用PostgreSQL(8.4),我创建总结了几桌各种结果的视图(例如创建列a,b,c在视图中),然后我需要一些结果结合在同一个查询(例如a+b,a-b,(a+b)/c,...),以产生最终结果。我要注意的是,即使在同一查询中完成操作,每次使用时,中间结果都会被完全计算。 有没有一种方法可以对此进行优化,从而避免每次都计算相同的结果? 这是重现该问题的简化示例。 CREATE TABLE test1 ( id SERIAL PRIMARY KEY, log_timestamp TIMESTAMP NOT NULL ); CREATE TABLE test2 ( test1_id INTEGER NOT NULL REFERENCES test1(id), category VARCHAR(10) NOT NULL, col1 INTEGER, col2 INTEGER ); CREATE INDEX test_category_idx ON test2(category); -- Added after edit to this question CREATE INDEX test_id_idx …


3
优化InnoDB默认设置
我查看了my.ini,并看到了各种默认设置。我的数据库在单个独立PC上运行。我想总体上优化InnoDB和MySQL的性能。磁盘空间没有限制。我应该更改哪些默认设置以优化性能,可靠性和可能的​​时间点备份[高可用性]。 已编辑 目前,每当我通过维护在MySQL Administrator上运行“优化表”时,它就会显示: 表不支持优化,而是执行重新创建+分析 在所有桌子上。我所有的表都是InnoDB,但是为什么它们不支持Optimize?

3
使用MySQL触发器或事务?
我想问一下您在网站上使用MySQL触发器或事务的意见。 实际上,我有一个payment带有- 的历史记录表UserId | OperationId | Comment | Credits | Sign (debit or credit)。因此,每个付款操作都会插入此表中。 但是,计算用户每次执行操作时的总信用额度将非常耗时。因此,我认为将每个用户的总信用额保留在用户profile表中可能是一个好主意。 这是问题所在。如何确定表格中的总贷方金额profile与payment历史记录表格中的操作保持同步? 我认为使用2种方法: MySQL触发器或 源代码中编码的交易 哪个更可靠?如果我有大型数据库(超过100.000个用户)怎么办? 您对此有何建议? BD MySQL引擎是InnoDB。


1
MySQL是否仍以这种方式处理索引?
在MySQL中删除重复索引需要花费相当长的时间,因此在等待期间,我进行了搜索并找到了2006年以来的这篇文章,谈论MySQL如何处理ADD和建立DROP索引。 如果表T是具有四个索引(ndx1,ndx2,ndx3,ndx4)的MySQL表,并且您想“更改表T的删除索引ndx3;” 这正是幕后发生的事情: 1)MySQL将T.MYD复制到临时表,即S.MYD和零字节的S.MYI。2)MySQL确实在表S上添加了索引ndx1(...);3)MySQL确实在表S上添加了索引ndx2(...);4)MySQL确实在表S上添加了索引ndx4(...);5)MySQL删除T.MYD并删除T.MYI 6)MySQL将S.MYD重命名为T.MYD,并将S.MYI重命名为T.MYI 这仍然是真的吗?他的建议仍然有效吗? 给定具有四个索引(ndx1,ndx2,ndx3,ndx4)的同一MyISAM表T,并且您要“更改表T的删除索引ndx3;” 试试这个代替: 1)创建像T一样的表T1;这将创建一个具有索引ndx1,ndx2,ndx3和ndx4的空表T1。2)alter table T1丢弃索引ndx3; 这会将索引ndx3丢弃在空T1上,该索引应该是瞬时的。3)插入T1中,从T中选择*;这将填充表T并一次性加载T1的所有三(3)个索引。4)放表T表;5)将alter table T1重命名为T; 大家如何处理大表中的索引添加和删除?

4
TSQL:查找查询分别导致过多的SQL编译和SQL重新编译
我想找出是什么导致性能监视器计数器中出现的高SQL编译(不是重新编译)。 这是我的看法:如果我看到许多SQl编译,则意味着由于以下原因,我们的系统上的查询未得到缓存: 许多特别查询 运行SQl不缓存的查询,例如: UPDATE table1 SET col1 ='字符串长于8000个字符...'WHERE key_column =一些整数 计划正在超时并从缓存中删除,原因如下:缓存空间不足或计划使用时间不够长。 捕获捕获到探查器中的缓存插入的唯一方法是存储过程-> SP:CacheInserts,但它仅负责存储过程缓存。 所以我尝试了以下方法来获取即席查询: SELECT [cp].[refcounts] -- when Refcounts becomes 0, plan is excluded from cache. , [cp].[usecounts] , [cp].[objtype] , st.[dbid] , st.[objectid] , st.[text] , [qp].[query_plan] FROM sys.dm_exec_cached_plans cp CROSS APPLY sys.dm_exec_sql_text ( cp.plan_handle ) st CROSS …

3
通过使用存储过程处理数据而不是将数据存储到检索后的函数中,是否可以提高性能?
标题进行了总结。我对PHP相当满意,并且可以轻松地使用MySQL的值来使其满足我的需要,但是为了扩展我的知识,我一直在想,这是否可能是一种更有效的技术。长跑。它们是否相等(由于最后的处理量大致相同),还是在某些情况下一个呈现出明显的优势?

4
如何在MySQL上加快“显示列”的速度?
我的应用程序依赖于为某些表运行“显示列”。运行大约需要60毫秒,而我们所有其他查询都需要不到1毫秒。information_schema直接查询甚至更慢。 该数据库包含约250个数据库,每个数据库100至200个表(总计约2万个表)。 如何找出这些操作为何如此缓慢? 也许我可以更改某些设置以使其运行更快,或将其缓存到SQL端吗? (该应用程序每页面加载大约执行14个这样的查询-我很清楚,这个旧代码需要清理,但是在进行长期修复时会寻找可能的选项。)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.