出于安全原因,更改 Microsoft Sql Server 的端口是很常见的。此处讨论的主题是更改 SQL Server 端口真的那么安全吗?
我的问题是:这也适用于 PostgreSQL 吗?还是不相关?
在查看pl/pythonand 的几个示例时pl/pgsql,我看到许多(但不是全部)使用volatile cost.
IE:
CREATE OR REPLACE FUNCTION my_function()
RETURNS setof record AS
$BODY$
-- code
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
Run Code Online (Sandbox Code Playgroud)
搜索有关volatile cost我的更多信息时发现(乍一看)大约至少 90% 的网络示例都在使用volatile cost 100,有时有时会使用volatile cost 1。(因为rows它是 1000)。
据我了解,此指示有助于查询计划优化器决定如何在短路布尔运算中设置优先级。
如果我开始给出估计值cost或rows对我的每个存储过程进行估计,是否过早优化?我应该只在我想优化某些查询时才这样做吗?选择成本的良好价值是一门艺术吗?
我知道命令explain,我还没有学会。这个命令对估计有帮助cost吗?
这里有人知道MySQL Proxy的最新发展情况吗?我在网上找到的大多数材料都已经过时了。
我不知道这个问题是否更适合这里或 SO ...
这是我想启动的脚本(该函数的代码是从 SO 上的一个问题复制的):
\c mydb
create or replace function truncate_tables(username in varchar) returns void as $$
declare
stmt RECORD;
statements cursor for select tablename from pg_tables where tableowner = username;
begin
for stmt in statements loop
execute 'truncate table ' || quote_ident(stmt.tablename) || ' CASCADE ;';
end loop;
end;
$$ language 'plpgsql';
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
ERROR: syntax at or near "$1" LINE1: $1
QUERY $1
CONTEXT: SQL statement in PL/PgSQL function "truncate_tables" near line 5
Run Code Online (Sandbox Code Playgroud)
我是 Postgres …
好的,首先,我对数据库的了解非常有限。
我的下一个问题是:我插入了几行包含荷兰字符的数据,例如不同国家的名称。一些国家在其名称末尾有荷兰语特殊字符 ë,或者像乌克兰在 i 上有两个点(Servië、Oekraïne、Tunesië、Somalië 等...)。数据库中的这些字符如下所示:ë -> A? 和 ï -> AZ。
当然,我希望这些荷兰语字符显示在数据库中。
我在 ubuntu 12.04 上使用 postgresql 9.1。我已经安装了 depot 软件包。
我在我的系统中添加了一个新分区,我想在这个分区上创建一个 postgresql 数据库(它将完全专用于这个数据库)。
我的 pgdata 位于var/lib/postgresql/9.1/main. 我打算停止 postgresql 服务,将 pgdata 内容复制到新分区,然后创建一个指向新分区的符号链接,chown将新目录指向 postgres 用户,重新启动 postgresql ......但恐怕这一切看起来更像是一个黑客。
有没有办法专门在指定的分区上创建数据库?更“规范”的东西(不是与 ubuntu 的文字游戏)
这是我的配置:
#postgres.conf:
listen_addresses = 'localhost'
#pg_hba.conf:
local all postgres md5
local all appuser trust
local all devuser trust
local all all peer
Run Code Online (Sandbox Code Playgroud)
我正在使用 C-Library 在本地连接libpq。我的连接字符串是:
host=localhost user=appuser dbname=mydbname port='5432'
但是,除非我的开发人员用户(devuser)(启动与 libpq 链接的应用程序的人)的家中有一个 .pgpass 文件,否则我的可执行文件无法连接,我收到错误 fe_sendauth : no password supplied
正如我所说,如果 .pgpass 文件在这里,那么它连接正常。
我不明白的是:我配置了local all appuser trust。为什么我仍然需要一个 .pgpass 文件?
(这本身并不是一个严重的问题,因为稍后为了安全措施,它将不再位于trust, but md5,所以无论如何我都会拥有 .pgpass 文件。但我想知道)
postgresql ×5
collation ×1
cursors ×1
db2 ×1
dynamic-sql ×1
encoding ×1
mysql ×1
mysql-proxy ×1
optimization ×1
oracle ×1
plpgsql ×1
security ×1