小编Nic*_*ard的帖子

PostgreSQL临时表

我需要执行250万次查询.此查询生成我需要的一些行,AVG(column)然后使用它AVG来从低于平均值的所有值中过滤表.然后我需要将INSERT这些过滤结果放入表格中.

以合理的效率执行此类操作的唯一方法似乎是TEMPORARY TABLE为每个query-postmaster python-thread 创建一个.我只是希望这些TEMPORARY TABLEs不会被持久化到硬盘驱动器(根本)并且将保留在内存(RAM)中,当然,除非它们没有工作内存.

我想知道TEMPORARY TABLE是否会引发磁盘写入(这会干扰INSERTS,即整个进程缓慢)

postgresql optimization performance temp-tables

68
推荐指数
2
解决办法
8万
查看次数

PostgreSQL HASH索引

有谁知道应该使用PostgreSQL HASH而不是B-TREE的情况,因为在我看来这些东西都是陷阱.它们比B-TREE花费更多的时间来创建或维护(至少10倍),它们也占用更多空间(对于我的一个table.columns,B-TREE占用240 MB,而HASH会占用拿4 GB)我似乎从谷歌搜索中了解到,他们选择的速度不比B-TREE快; 然而HASH最近可能已经优化或谷歌错了.

无论如何,我想要你的家伙的意见和经验.如果这些HASH是邪恶的,人们应该知道.

谢谢
:MySQL的HASH怎么样?

sql database postgresql indexing

28
推荐指数
3
解决办法
8911
查看次数

游标如何在Python的DB-API中工作?

我一直在使用python和RDBMS'(MySQL和PostgreSQL),我注意到我真的不明白如何使用游标.

通常,他的脚本通过客户端DB-API(如psycopg2或MySQLdb)连接到数据库:

connection = psycopg2.connect(host='otherhost', etc)
Run Code Online (Sandbox Code Playgroud)

然后创建一个游标:

cursor = connection.cursor()
Run Code Online (Sandbox Code Playgroud)

然后可以发出查询和命令:

cursor.execute("SELECT * FROM etc")
Run Code Online (Sandbox Code Playgroud)

现在查询的结果在哪里,我想知道?它在服务器上?还是我的客户端上的一点点,我的服务器上的一点点?然后,如果我们需要访问某些结果,我们会获取它们:

rows = cursor.fetchone() 
Run Code Online (Sandbox Code Playgroud)

要么

rows = cursor.fetchmany()
Run Code Online (Sandbox Code Playgroud)

现在让我们说,我不检索所有行,并决定执行另一个查询,以前的结果会发生什么?是他们的开销.

此外,我应该为每种形式的命令创建一个游标,并以某种方式不断地将它重用于那些相同的命令; 我头psycopg2可以某种方式优化多次执行但具有不同值的命令,它是如何值得的?

谢谢

python performance rdbms cursors psycopg2

28
推荐指数
1
解决办法
1万
查看次数

23
推荐指数
4
解决办法
6974
查看次数

Python中的概率分布

我有一堆钥匙,每个钥匙都有一个不可靠的变量.我想随机选择其中一个键,但我希望它不太可能被选中(键,值)而不是不太可能(更可能)的对象.我想知道你是否会有任何建议,最好是我可以使用的现有python模块,否则我需要自己制作.

我检查了随机模块; 它似乎没有提供这个.

我必须为1000个不同的对象集做出数百万次这样的选择,每个对象包含2,455个对象.每个集合将在彼此之间交换对象,因此随机选择器需要是动态的.拥有1000套2,433件物品,即243.3万件物品; 低内存消耗至关重要.由于这些选择不是算法的主要部分,我需要这个过程非常快; CPU时间有限.

谢谢

更新:

好的,我试图明智地考虑你的建议,但时间是如此有限......

我查看了二叉搜索树方法,它看起来风险太大(复杂而复杂).其他建议都类似于ActiveState配方.我拿了它并稍微修改了一下,希望提高效率:

def windex(dict, sum, max):
    '''an attempt to make a random.choose() function that makes
    weighted choices accepts a dictionary with the item_key and
    certainty_value as a pair like:
    >>> x = [('one', 20), ('two', 2), ('three', 50)], the
    maximum certainty value (max) and the sum of all certainties.'''
    n = random.uniform(0, 1)
    sum = max*len(list)-sum 
    for key, certainty in dict.iteritems():
        weight = float(max-certainty)/sum
        if n < weight:
            break
        n = n …
Run Code Online (Sandbox Code Playgroud)

python random algorithm distribution probability

21
推荐指数
2
解决办法
2万
查看次数

postgresql中的long UPDATE

我一直在一个包含2.5亿行和3个索引的表上运行UPDATE; 此UPDATE使用另一个包含3000万行的表.现在已经运行了大约36个小时.我想知道如果他们计划花费一百万天来完成它的事情,他们是否有办法找出完成的距离,我会杀了它; 但如果它只需要一两天,我会让它运行.这是命令查询:

UPDATE pagelinks SET pl_to = page_id
    FROM page
    WHERE 
        (pl_namespace, pl_title) = (page_namespace, page_title)
        AND
        page_is_redirect = 0
;
Run Code Online (Sandbox Code Playgroud)

EXPLAIN不是这里的问题,我只提到大表有多个索引,以便在某种程度上证明更新它需要多长时间.但无论如何这里是EXPLAIN:

Merge Join  (cost=127710692.21..135714045.43 rows=452882848 width=57)
  Merge Cond: (("outer".page_namespace = "inner".pl_namespace) AND ("outer"."?column4?" = "inner"."?column5?"))
  ->  Sort  (cost=3193335.39..3219544.38 rows=10483593 width=41)
        Sort Key: page.page_namespace, (page.page_title)::text
        ->  Seq Scan on page  (cost=0.00..439678.01 rows=10483593 width=41)
              Filter: (page_is_redirect = 0::numeric)
  ->  Sort  (cost=124517356.82..125285665.74 rows=307323566 width=46)
        Sort Key: pagelinks.pl_namespace, (pagelinks.pl_title)::text"
        ->  Seq Scan on pagelinks  (cost=0.00..6169460.66 rows=307323566 width=46)
Run Code Online (Sandbox Code Playgroud)

现在我还发送了一个并行查询命令,以便DROP一个pagelinks的索引; 当然它正在等待UPDATE完成(但我觉得无论如何都要尝试它!).因此,我无法从页面链接中 …

sql postgresql sql-update

6
推荐指数
1
解决办法
3683
查看次数

Lua语法突出显示arXiv的乳胶

我有一个乳胶文件,需要包含Lua代码片段(用于显示,而不是执行),所以我使用了铸造包.它需要乳胶与latex -shell-escape旗帜一起运行.

我正在尝试将PDF提交上传到arXiv.该网站要求将这些提交为.tex,.sty并且.bbl,它们将自动从乳胶编译为PDF.当我试图提交给arXiv时,我了解到他们无法激活-shell-escape旗帜.

所以我想知道你们中是否有人知道如何在没有-shell-escape旗帜的情况下突出乳胶中的Lua代码.我尝试了列表包,但我不能让它在我的Ubuntu计算机上为Lua工作.

pdf lua latex syntax-highlighting

5
推荐指数
1
解决办法
806
查看次数

开发策略:凤凰开发周期

我想知道当你是你自己的老板时,你们实际上是如何开发大型应用程序的。对于我自己,我一直在努力学习耐心和希望的必要性。我一直致力于实现一个应用程序(以一系列链接到数据库的脚本的形式),该应用程序使用 Wikilinks 知识和文章文本/内容的组合来聚类 Wikipedia 文章。我已经做了两年了;还没有结果。

由于算法的本质(伪伪代码、理论算法)或形式(脚本、线程、数据库表、实用算法)发生变化,我似乎无法获得任何结果,因为我正在不断重新设计我的脚本和数据库. 基本上,我发现自己不断从我在实施过程中发现的错误中学习;魔鬼在细节中,答案似乎也是如此。

无论如何,每次我重新设计脚本或表格或其他东西时,我都需要废弃所有文档和脚本。我现在可以毫无畏惧地做到这一点,但这让我讨厌编程(我讨厌细节)。

我觉得重新设计是要走的路,因为我是长期思考的,我希望快速学习,但我想知道你们是否有类似的编程经验,或者你们是否真的不需要或选择有更好的脚本出来最后一个(像凤凰一样)的死亡。

对我来说最难的部分是抓取我的文档,因为我花更多的时间记录而不是编码;我使用文档作为讨论问题和考虑解决方案的手段;我用它来制定可实施的解决方案。如果不是我,我不介意刮它,但我总是像下周发布一样写它,因为我在开发剧本的同时也在寻求发展自己;我也像参与本网站的人一样,尝试与他人分享我的知识或智慧。

无论如何,这两个月我一直在全速发展,重新设计了无数的文章、脚本、表格等;我的耐心正在耗尽,因为我寻求结果。

您想分享任何策略,任何帮助,任何经验或轶事?

database project-management

4
推荐指数
1
解决办法
687
查看次数

PostgreSQL Long VACUUM

我目前正在清理一个包含2个索引和2.5亿个活动行以及大约尽可能多的死行(或更多)的表.我从我的客户端计算机(笔记本电脑)向我的服务器发出了命令VACCUM FULL ANALYZE.它在过去3-4天左右开展业务; 我想知道它是否会很快结束,因为我还有很多工作要做!

该服务器具有四码Xeon 2.66 GHz处理器,12 GB或RAM以及RAID控制器,该控制器连接到RAID 1配置中的2 x 10K rpm 146 GB SAS HD; 它正在运行Suse Linux.我想知道...

现在,首先VACUUM postmaster流程似乎只使用一个核心.其次,我没有看到对I/O空闲时间比率的非常高的I/O写入.第三,从调用开始procinfo,我可以推断VACUUM进程花费大部分时间(88%)等待I/0.

那么为什么不通过线程使用更多内核来使RAID控制器过载(获得高I/O写入空闲比率)?如果I/O负载不高,为什么还在等待I/O?为什么手指上的所有这些功率/资源都不会更快?在我看来,VACUUM可以而且应该是多线程的,特别是如果它在一个巨大的桌子上工作,它是唯一一个工作!

另外,他们是一种配置postgresql.conf以让它多线程化这样的VACUUM的方法吗?我可以杀死它并仍然可以从部分清理中获益吗?我需要在那张桌子上工作.

[我正在使用PostgreSQL 8.1]

谢谢了

postgresql rdbms vacuum

4
推荐指数
1
解决办法
6683
查看次数

PostgreSQL程序语言:选择?

我一直在使用PostgreSQL,玩维基百科的数百万个超链接等等,已经有2年了.我要么直接通过发送SQL命令来做我的事情,要么我在python中编写客户端脚本来管理一百万个查询,这时无法有效地(高效地)有效地完成.

我会在我的32位笔记本电脑上运行我的python脚本并让它与运行PostgreSQL的6000美元64位服务器通信; 因此,我将有额外的2.10 Ghz,3 GB的RAM,psyco和多线程SQL查询管理器.

我现在意识到现在是我升级的时候了.我需要使用过程语言(PL)学习服务器端脚本; 我真的需要减少网络流量及其固有的序列化开销.

现在,我真的不想研究所有的PL.知道我已经知道了python,并且我正在寻找努力和语言效率之间的手段,你们想知道我应该安装,学习和使用什么PL,为什么以及如何?

python postgresql

3
推荐指数
1
解决办法
2562
查看次数

如何将 tf.lookup 表与 TensorFlow 2.0 keras 和 MLFlow 结合使用

我花了大约 5 个小时左右的时间尝试让 TF 2.0 keras API 与 tf.lookup API 一起工作。我的训练脚本还使用 DataBricks 和mlflow.keras. MLFlow 要求模型被序列化,我认为这就是给我带来问题的原因。问题是:如何将 tf.lookup 表与 TensorFlow 2.0 keras 模型 API 和 MLFlow 结合使用。

当我尝试直接将功能性 Keras API 与 table.lookup 一起使用时,我遇到了 keras 序列化问题:

table = tf.lookup.StaticVocabularyTable(tf.lookup.TextFileInitializer(vocab_path, tf.string, 0, tf.int64, 1, delimiter=","), 1)
categorical_indices = table.lookup(categorical_input)
Run Code Online (Sandbox Code Playgroud)

将上述调用包装在一层中tf.keras.layers.Lambda没有帮助。我收到与资源句柄或缺少tf变量相关的错误...

python lookup-tables keras tensorflow

3
推荐指数
1
解决办法
1881
查看次数

PostgreSQL查询不一致

我正在尝试执行此SQL命令:

SELECT page.page_namespace, pagelinks.pl_namespace, COUNT(*) 
    FROM page, pagelinks
    WHERE 
        (page.page_namespace <=3 OR page.page_namespace = 12 
            OR page.page_namespace = 13
        ) 
        AND 
        (pagelinks.pl_namespace <=3 OR pagelinks.pl_namespace = 12 
            OR pagelinks.pl_namespace = 13
        )
        AND 
        (page.page_is_redirect = 0)
        AND 
        pagelinks.pl_from = page.page_id 
    GROUP BY (page.page_namespace, pagelinks.pl_namespace) 
; 
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我收到以下错误:

    ERROR:  could not identify an ordering operator for type record
    HINT:  Use an explicit ordering operator or modify the query.

    ********** Error **********

    ERROR: could not identify an ordering operator for type record
    SQL …
Run Code Online (Sandbox Code Playgroud)

sql postgresql rdbms wikipedia

2
推荐指数
1
解决办法
3655
查看次数