OLTP 数据库的硬件规格
软件规格
我的首要任务是数据完整性/保护,其次是性能。
我有一个查询,用于查找距离已知点 1 公里以内的位置。
为此,我使用了余弦球面定律公式和我的纬度和经度。
目前,该查询在大约 5 分钟内运行了大约 5000 条记录。这是可以接受的,但我想尽快完成。
我使用的主要查询:
select loc.*, base.key
from locations loc left outer join baseline base
on base.key in
(select key
from baseline
where [dbo].CIRCLEDISTANCE(loc.LAT, base.LATITUDE, loc.LONG, base.LONGITUDE) <= 1)
Run Code Online (Sandbox Code Playgroud)
圆距离标量值函数:
ALTER FUNCTION CIRCLEDISTANCE
(
-- Add the parameters for the function here
@LAT1 varchar(250),
@LAT2 varchar(250),
@LNG1 varchar(250),
@LNG2 varchar(250)
)
RETURNS float
AS
BEGIN
DECLARE @Distance float
DECLARE @LAT1_FLOAT float
DECLARE @LNG1_FLOAT float
DECLARE @LAT2_FLOAT float
DECLARE @LNG2_FLOAT float
select @LAT1_FLOAT …Run Code Online (Sandbox Code Playgroud) 我在@Dems 的帮助下创建了这个 SQL 查询 :-)
这是一些细节,我试图制作一个 SQLFiddle,但我的变量一直出错......这在 Sql Server 2008 中有效......我的问题是,如何使我的查询更快?我知道我在这里做错了很多事情(重复嵌套查询),我希望让你们中的一位 SQL 专家来看看并帮助我从 30 分钟的执行时间内解决这个问题!:-S
我不确定您需要多少信息才能帮助我解决这个问题,请提出任何问题,我会尽快回复。抱歉,如果缺乏详细程度,我只是不知道您想要/需要知道什么!
查询背后的基本思想是,在游戏中,我想找到所有在一段时间内没有移动 5 个单位的玩家,他们在静止状态下开火并且在停止移动之前 60 分钟没有开火。查询有效,但AND NOT EXISTS在我补充说运行需要 16 秒之前,它的子句正在减慢速度!16 秒仍然是一个很长的时间,所以任何其他改进都会受到赞赏,但现在这是我自己的 POC 游戏(只是把零碎的东西放在一起),16 秒是可以接受的......
DECLARE @n INT , @DistanceLimit INT
SELECT @n = 2 , @DistanceLimit = 5;
WITH partitioned
AS ( SELECT * ,
CASE WHEN Distance < @DistanceLimit THEN 1
ELSE 0
END AS PartitionID
FROM EntityStateEvent
WHERE ExerciseID = '8B50D860-6C4E-11E1-8E70-0025648E65EC'
),
sequenced
AS ( SELECT ROW_NUMBER() OVER ( PARTITION BY …Run Code Online (Sandbox Code Playgroud) performance sql-server-2008 sql-server tuning if-not-exists query-performance
当在线阅读有关 innodb_log_file_size 时,它说
日志文件的总大小必须小于 4GB
那么如果它需要更大呢?
在书籍和网上,它说将 innodb_log_file_size 设置为至少一个小时的写入值。
目前我有 2 个 1GB 的日志文件,在计算Innodb_os_log_written1 小时时,至少需要 10GB。2GB 的日志文件只能在我们的峰值负载下进行 20 分钟的写入。
蒂亚!
我找不到满意的答案。我完全理解“收缩”会导致索引碎片整理,这会降低性能。
但是,这不是减少碎片整理的选项吗?
那么,激活这个选项是好是坏?请不要增加我的困惑。我请你给我一个明确而简单的答案:要么更好,要么更糟。
然后如果你愿意,给我你的解释,我会很乐意阅读和欣赏。
磁盘可以维持的平均每秒输入/输出操作是调优 MySQL / InnoDB 数据库的一个非常重要的因素,因为它推动了脏 InnoDB 缓冲池页面刷新回磁盘的速度。
有没有一种方法或公式可以用来估计我的 RAID 10 磁盘阵列可以运行的每秒平均 I/O 操作数?
我们有一个使用 Python 2.7、Django、PostgreSQL 9.1 和 PostGIS 1.5 构建的系统。在这个系统中有一些广泛的验证过程,这些过程非常密集。
我们的机器:
SO:CentOS 6 硬件:8 核,32GB RAM,4Tb 硬盘;
我们,用于开发和测试,使用默认的 PostgreSQL 配置,我认为有些错误。我想利用我们的硬件提供的全部容量,到目前为止我们没有得到很多流量。当这个版本向公众发布时,将会有很多用户并发。
我们的应用程序有一些队列和异步策略来处理负载,但是,主要问题是:我如何安全地调优 PostgreSQL,运行一些测试,并确保调优在一定程度上有效?
postgresql performance tuning postgresql-9.1 performance-tuning
有人可以建议我一种方法来监视我的数据库服务器上的负载吗?我应该每天监控哪些性能计数器,并确认服务器上的负载每天[或]每周[或]每个月都在增加。另外,建议我是否可以使用 DMV 来实现这一点,以便我们可以使用 SQL 代理作业将此信息存储在表中。因为作为一个 sql 人员,我会更乐意使用 TSQL 查询。
做这一切对我有帮助,向管理层提出我的论点,即该服务器可以根据数据处理这么多负载,如果服务器上的负载增加,我们可能需要更多资源(例如 CPU、更好的存储,更多 RAM 等...)或转移到具有更多功能的新服务器。
另外,请建议任何负载测试工具,以便我可以在测试环境中进行测试。
SQL Server 2008 R2,Dynamics AX 2009 我们有这个丑陋的查询
DECLARE @P1 NVARCHAR(5), @P2 INT, @P3 INT, @P4 NVARCHAR(11), @P5 INT, @P6 NVARCHAR(5), @P7 NVARCHAR(11)SELECT A.SALESID,
A.LINENUM,
A.ITEMID,
A.SALESSTATUS,
A.LEDGERACCOUNT,
A.NAME,
A.EXTERNALITEMID,
A.TAXGROUP,
A.QTYORDERED,
A.SALESDELIVERNOW,
A.REMAINSALESPHYSICAL,
A.REMAINSALESFINANCIAL,
A.COSTPRICE,
A.SALESPRICE,
A.CURRENCYCODE,
A.LINEPERCENT,
A.LINEDISC,
A.LINEAMOUNT,
A.CONFIRMEDDLV,
A.RESERVATION,
A.SALESUNIT,
A.DIMENSION,
A.DIMENSION2_,
A.DIMENSION3_,
A.PRICEUNIT,
A.PROJTRANSID,
A.INVENTTRANSID,
A.CUSTGROUP,
A.CUSTACCOUNT,
A.SALESQTY,
A.SALESMARKUP,
A.INVENTDELIVERNOW,
A.MULTILNDISC,
A.MULTILNPERCENT,
A.SALESTYPE,
A.BLOCKED,
A.COMPLETE,
A.REMAININVENTPHYSICAL,
A.TRANSACTIONCODE,
A.TAXITEMGROUP,
A.TAXAUTOGENERATED,
A.UNDERDELIVERYPCT,
A.OVERDELIVERYPCT,
A.BARCODE,
A.BARCODETYPE,
A.INVENTREFTRANSID,
A.INVENTREFTYPE,
A.INVENTREFID,
A.ITEMBOMID,
A.LINEHEADER,
A.SCRAP,
A.DLVMODE,
A.INVENTTRANSIDRETURN,
A.PROJCATEGORYID,
A.PROJID,
A.INVENTDIMID,
A.TRANSPORT,
A.STATPROCID, …Run Code Online (Sandbox Code Playgroud) tuning ×9
performance ×5
sql-server ×5
innodb ×2
mysql ×2
functions ×1
mysql-5.5 ×1
optimization ×1
postgresql ×1
storage ×1
xtradb ×1