【问题标题】:WAPP Portable - 64 bitWAPP 便携式 - 64 位
【发布时间】:2014-04-26 19:04:30
【问题描述】:

我从http://portableapps.com/node/23022 下载了便携式 WAPP,但我试图将 shared_buffer 增加到 1GB 以上,我认为这是失败的,因为堆栈包含 32 位 postgresql。我似乎找不到任何带有 64 位 postgresql 的堆栈。

是否有任何堆栈包含 postgresql 64 位?

有像 http://zwamp.sourceforge.net/ 这样的堆栈和 64 位 mysql,所以我不明白为什么同样的堆栈显然不适用于 postgresql。

如果没有,是否有任何简单的方法(或任何人编写的有用指南)来使 postgresql 64 位的原始安装可从一台计算机传输到另一台计算机(即,只需将目录复制并粘贴到另一台计算机上,说计算机 A 上的 C:\postgresql\ 然后复制到计算机 B 上的同一路径,然后执行脚本以启动/关闭,无事可做)?这甚至可能吗?

编辑——回应克雷格——

我对 postgresql 或缓存的工作原理知之甚少。我会澄清一些事情。首先,是的,我使用的是 Windows。

我正在使用数据库来分析一个非常大的数据集(几亿行),只是想确保它充分利用我机器上可用的内存,以减少必须从磁盘读取。在 mysql 中,简单地增加 innodb 缓冲池会带来非常显着的性能提升,并且只需转到任务管理器即可轻松验证其对 ram 的使用(因为在运行任何密集查询时,它会迅速增加到其设置的数量) .

你是说使用 postgresql 我不会看到它的任何进程的内存使用准确地反映数据库正在使用的 ram 数量吗?如果是这样,我怎么知道它正在使用多少内存?

至于它是可移植的,我真的只关心复制文件夹的能力,然后能够使用该文件夹 - 代表当时的数据库 - 稍后(用于备份目的)。我不太关心实际上是否能够从 USB 驱动器运行它。我有数据库的机器有一个 SSD。我只想制作文件夹的副本,将它们存放在某个地方,然后在需要时能够重新使用它们。这会影响我应该怎么做吗?

【问题讨论】:

    标签: database postgresql 64-bit portability


    【解决方案1】:

    您不一定需要shared_buffers 增加超过 1GB;目前尚不清楚您为什么要这样做。 PostgreSQL 使用系统的所有内存作为缓存,尽管该内存在操作系统中显示为“空闲”,它实际上用于磁盘缓存。对于我期望的便携式应用程序构建的各种用途,如果您真的需要增加shared_buffers,我会感到惊讶。

    也就是说,是的,使用 PostgreSQL 并使其“可移植”非常容易。假设您在 Windows 上(因为您没有说,便携式应用程序的东西主要是 Windows 的东西)您可以download the "binaries only" zip 并将其解压缩到您的可移动存储介质上。使用initdb 在可移动存储上创建一个新的数据库集群。然后写一些快速的批处理脚本,pg_ctl startpg_ctl stop 服务端。

    注意事项:

    • 所有计算机都必须运行相同架构的 PostgreSQL 版本。您不能在 32 位系统上运行 32 位 PostgreSQL,在 64 位系统上运行 64 位。在 32 位和 64 位 Windows 上运行 32 位 PostgreSQL 是完全可以的,而且效果很好,这可能就是为什么没有封装 64 位 PostgreSQL 的便携式应用程序的原因。

    • 存储器不得格式化为 FAT32。 Windows 需要 NTFS。

    • 虽然这不是绝对必要的,但最好在删除存储之前停止服务器。如果存储不支持刷新请求(某些 USB 密钥和 SD 卡),那么这绝对是至关重要的,否则将导致数据损坏。 pg_test_fsync 可以提供帮助 - 如果报告的刷新率远高于对存储的意义,请保持警惕。

    • 可移动存储通常非常慢。这将反映在 PostgreSQL 的性能上。如果可能,请使用 eSATA 或 FireWire 800。 USB3 作为第二选择。其他任何事情都会很糟糕,您将需要有足够的 RAM 来缓存整个数据集以获得良好的性能。 (这不一定是shared_buffers,只要有足够的可用系统 RAM)。

    【讨论】:

    • 克雷格,谢谢,请参阅我的编辑以进行澄清。由于字数限制,无法在此处添加。
    • 呃,这是一个完全不同的问题。重新使用内存:与 MySQL 不同,PostgreSQL 依赖 操作系统 进行磁盘缓存。所以它将磁盘缓存显示为 PostgreSQL 使用的 RAM。你不需要为缓存增加shared_buffers,它可能会适得其反。至于便携性:手册是你的朋友。在这种情况下,您想要的只是停止数据库服务器复制数据目录 - 或者如果您想要实时副本,则使用pg_basebackup。非常简单。请参阅手册。 postgresql.org/docs/current/static/backup.html
    • 谢谢,作为后续行动,在我的情况下,使用 16gb 内存,数据库将无法使用 32 位安装而不是 64 位安装会吗?因为它使用的是 64 位的操作系统缓存(在我的情况下)?还有什么方法可以告诉 postgresql 它使用了多少操作系统缓存?
    • DB 将无法使用更多/更少的作为磁盘缓存。肯定有一个限制,更多的 shared_buffers 将是有益的,但我真的怀疑它对你的工作量很重要。是的,因为它依赖于操作系统进行缓存。不,Pg 中无法判断操作系统正在缓存多少磁盘数据,因为操作系统正在缓存它而不是 PostgreSQL。
    猜你喜欢
    • 2011-01-28
    • 2017-03-24
    • 2016-09-28
    • 1970-01-01
    • 1970-01-01
    • 2011-02-01
    • 2011-02-20
    • 2016-06-20
    • 2011-03-06
    相关资源
    最近更新 更多