使用SQL Server Management Studio.
如何在没有结果窗口影响我的测试的情况下测试大型选择(比如600k行)的性能?所有事情都是平等的并不重要,因为两个查询都会输出到同一个地方.但我想加快我的测试周期,我认为SQL Server Management Studio的输出设置正在阻碍我.输出到文本是我目前使用的,但我希望有更好的选择.
我认为这会影响我的数字,因为数据库在我的本地盒子上.
编辑:有一个关于在这里做WHERE 1 = 0的问题(认为连接会发生但没有输出),但我测试了它并且它不起作用 - 不是查询性能的有效指标.
我总是听到有人说使用游标很糟糕,尤其是在Microsoft SQL Server中,因为它们非常慢.MySQL上的Cursors也是这种情况吗?MySQL中的游标是否也会降低性能?有人可以请教一下MySQL中游标的用法吗?
我刚刚升级到MySQL 5.1.6,以便利用将常规日志保存到表中的能力 - >即mysql.general_log.一旦我这样做,我立即感到惊讶,实际上有多少查询正在触及我们的系统.从第一个小时开始,我在此常规日志表中有大约40,000行.我还没有在MySQL文档中发现它是否存在一般日志表大小限制.
让这个普通日志以这个速度增长是否有问题?
如果有尺寸问题,如何处理?
是否有一些公认的做法如何处理尺寸问题?
我应该制作一个清除表格的事件并经常将数据保存到文件中吗?
非常感谢您的帮助!
我在Amazon XLarge实例(16Gb RAM,4核CPU)上部署了4个节点HBase v0.90.4-cdh3u3集群,其中8Gb堆-Xmx分配给HRegion服务器,2Gb用于数据节点.HMaster\ZK\Namenode位于单独的XLarge实例上.目标数据集是1亿条记录(每条记录是10个字段,100个字节).基准测试从并行100个线程同时执行.
与YCSB团队在YCSB论文中所取得的成绩相比,我对阅读延迟感到困惑.它们的吞吐量高达7000 ops/sec,延迟为15 ms(第10页,读取延迟图表).在90%读取/ 10%写入工作负载时,我无法获得高于2000 ops/sec的吞吐量.写入非常快,禁用自动提交(响应在几毫秒内),而读取延迟平均不低于70毫秒.
这些是我使用的一些HBase设置:
您建议使用哪些设置来查看\ tune以加快HBase的读取速度?
我想存储大量(〜数千)字符串,并能够使用通配符执行匹配.
例如,以下是示例内容:
Folder1Folder1/Folder2Folder1/*Folder1/Folder2/Folder3Folder2/Folder**/Folder4*/Fo*4(每行也有附加数据,如标签,但匹配仅针对该键)
以下是我想要与数据匹配的示例:
Folder1Folder1/Folder2/Folder3Folder3(*在这里是一个通配符,它可以是一个不同的角色)
我天真地考虑将它存储在MySQL表中并使用%通配符与LIKE操作符,但MySQL索引只适用于通配符左侧的字符,在我的情况下它可以在任何地方(即%/Folder3).
所以我正在寻找一种可以在PHP中使用的快速解决方案.我是开放的:它可以是一个单独的服务器,一个使用正则表达式文件的PHP库,...
php database datasource string-matching database-performance
这非常类似于另一个被关闭的问题,而不是一个真正的问题.我试图编辑它以使其有效重新开放,但被告知我最好不要问一个新问题.
我正在开发android并需要在sqlite数据库中存储datetime值来跟踪将生成通知的重复事件.我还需要能够根据时间范围查询数据库.
在SQLite的文档指出它不支持特定的日期类型但日期可以使用文本,REAL,或整型表示:
TEXT为ISO8601字符串("YYYY-MM-DD HH:MM:SS.SSS").
真实如朱利安日数,根据公历4714年11月24日格林威治中午以来的天数.
INTEGER as Unix Time,自1970-01-01 00:00:00 UTC以来的秒数.
最初的优点似乎是:
这听起来不错吗?使用INTEGER作为日期时间会使查询时间范围明显快于使用TEXT时的速度吗?还有什么我还没考虑过吗?
鉴于我的用例,哪些解决方案最好?
如果执行以下数据库(postgres)查询,则第二次调用要快得多.
我想第一个查询很慢,因为操作系统(linux)需要从磁盘获取数据.第二个查询受益于文件系统级别和postgres中的缓存.
有没有办法优化数据库,以便在第一次调用时快速获得结果?
第一次通话(慢)
foo3_bar_p@BAR-FOO3-Test:~$ psql
foo3_bar_p=# explain analyze SELECT "foo3_beleg"."id", ... FROM "foo3_beleg" WHERE
foo3_bar_p-# (("foo3_beleg"."id" IN (SELECT beleg_id FROM foo3_text where
foo3_bar_p(# content @@ 'footown'::tsquery)) AND "foo3_beleg"."belegart_id" IN
foo3_bar_p(# ('...', ...));
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Nested Loop (cost=75314.58..121963.20 rows=152 width=135) (actual time=27253.451..88462.165 rows=11 loops=1)
-> HashAggregate (cost=75314.58..75366.87 rows=5229 width=4) (actual time=16087.345..16113.988 rows=17671 loops=1)
-> Bitmap Heap Scan on foo3_text (cost=273.72..75254.67 rows=23964 width=4) (actual time=327.653..16026.787 rows=27405 loops=1)
Recheck Cond: (content @@ '''footown'''::tsquery)
-> Bitmap Index Scan on …Run Code Online (Sandbox Code Playgroud) 我很好奇.我有这样的流程:我们有大量的数据集合/表.并且有一些select长期需要3秒的定向查询.
然而,我们期待高度并发的环境,每秒我们在数据库中获得100条新记录.
所以假设我们有一个查询,在查询开始之前,我们有1000个项目满足这些查询.查询需要3秒,每秒有50个新项目与添加到数据库的查询匹配.我的问题是 - 这是这个查询返回给我的结果(它仍然是1000或1150或介于两者之间)以及它如何依赖于不同的数据库引擎(SQL,NoSQL).Ø
这不是关于确切数字的问题,而是更多 - 为什么它将是那些数字.
看起来问题有点宽泛.让我们用MySQL,Postgres,MongoDB和Cassandra限制数据库.
我使用的是Hibernate Envers 4.3.10.Final。我有以下两个JPA类:
public class Factory {
private int factoryID;
....
}
public class Trgs{
private int trgsID;
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="fk_factory")
private Factory factory;
}
Run Code Online (Sandbox Code Playgroud)
我编写了一种方法,可重新调整所有审核的Trgs对象。
方法是:
public List<Trgs> readAuditedTrgs (List<Integer> trgsIds) {
AuditReader reader = AuditReaderFactory.get(entityManager);
AuditQuery query = reader.createQuery().forRevisionsOfEntity(Trgs.class, true, true);
query.add(AuditEntity.id().in(ids));
query.add(AuditEntity.revisionType().eq(RevisionType.ADD));
query.addOrder(AuditEntity.revisionNumber().desc());
return query.getResultList() ;
}
Run Code Online (Sandbox Code Playgroud)
执行完上述方法后,我的结果是审核的运输清单。当然,每个Trgs对象都具有正确和相关的Audited Factory对象。
但是问题是,我了解到Hibernate Envers始终加载关系LAZY。
因此,在我的情况下,我必须遍历Trgs列表并初始化每个Factory对象。
for (Trgs trgs : resultList) {
Hibernate.initialize(trgs.getFactory());
}
Run Code Online (Sandbox Code Playgroud)
因此,如果我有300个Trgs对象,则必须初始化300个Factory对象。这花费了太多。我必须等一分钟。
我了解到不可能过度加载Factory对象。但我需要其他解决方案。我在Dashboad网站(Web项目)中显示此数据。用户不能等待一分钟,直到加载数据。
请帮助我解决这个问题。谢谢。
对于性能问题,我想在django的内存数据库中执行优化算法(我可能会执行很多查询).我知道在内存中可以使用sqlite(如何仅在内存中运行Django的测试数据库?)但我宁愿使用postgresql,因为我们的prod数据库是postgresql数据库.
有人知道如何告诉django在内存中创建postgresql数据库吗?
提前致谢
database ×3
mysql ×2
performance ×2
postgresql ×2
sql ×2
android ×1
benchmarking ×1
concurrency ×1
cursor ×1
datasource ×1
datetime ×1
disk-io ×1
django ×1
hbase ×1
hibernate ×1
java ×1
jpa ×1
latency ×1
logging ×1
nosql ×1
php ×1
sql-server ×1
sqlite ×1
ycsb ×1