小编Ada*_*tan的帖子

MySQL 表创建异常缓慢

在我的一个 MySQL 数据库上创建一个简单的表需要永远:

mysql> CREATE TABLE blah (id BIGINT UNSIGNED NOT NULL PRIMARY KEY);
Query OK, 0 rows affected (16.58 sec)
Run Code Online (Sandbox Code Playgroud)

机器很闲:

01:21:26 PM       CPU     %user     %nice   %system   %iowait    %steal     %idle
01:21:27 PM       all      0.50      0.00      0.21      0.00      0.00     99.29
Run Code Online (Sandbox Code Playgroud)

任何想法如何调查这个?

编辑:按照DTest 的建议,这是执行配置文件:

mysql> SHOW PROFILE FOR QUERY 1;
+----------------------+----------+
| Status               | Duration |
+----------------------+----------+
| starting             | 0.000044 |
| checking permissions | 0.000024 |
| creating table       | 8.668129 |
| After create         | …
Run Code Online (Sandbox Code Playgroud)

mysql performance

10
推荐指数
1
解决办法
7609
查看次数

Postgresql 9.3:使用现有唯一索引添加唯一约束

我想向我的生产数据库之一中的 DB 字段添加唯一约束。不幸的是,以下语句阻塞了:

ALTER TABLE package ADD CONSTRAINT unique_package_id UNIQUE (package_id);
Run Code Online (Sandbox Code Playgroud)

从 PostgreSQL 手册中阅读相关部分

注意:在需要在不长时间阻塞表更新的情况下添加新约束的情况下,使用现有索引添加约束会很有帮助。为此,请使用 CREATE INDEX CONCURRENTLY 创建索引,然后使用此语法将其安装为官方约束。请参阅下面的示例。

我试过:

CREATE UNIQUE INDEX CONCURRENTLY package_tmp_id_idx ON answer (package_id);
Run Code Online (Sandbox Code Playgroud)

其次是:

prod_db=> ALTER TABLE package ADD CONSTRAINT 
          unique_package_id UNIQUE (package) USING INDEX package_tmp_id_idx;
Run Code Online (Sandbox Code Playgroud)

哪个失败了:

ERROR:  syntax error at or near "package_tmp_id_idx"
LINE 1: ...T unique_package_id UNIQUE (answer_id) USING INDEX package_tmp_id_idx...
                                                             ^
Run Code Online (Sandbox Code Playgroud)

我试过使用语法,但无法让它工作。

使用现有 UNIQUE 索引创建 UNIQUE 约束的正确语法是什么?

index postgresql-9.3 unique-constraint

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

MySQL:排序规则的非法混合

我尝试使用存储过程来创建索引,但出现以下错误:

ERROR 1267 (HY000): Illegal mix of collations (utf8_general_ci,IMPLICIT) and 
                    (utf8_unicode_ci,IMPLICIT) for operation '='
Run Code Online (Sandbox Code Playgroud)

没有行号或任何其他调试提示。

  • 调试此错误的最佳方法是什么?
  • 有什么好的指导方针可以避免编码不一致吗?

mysql collation utf-8 encoding

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

PostgreSQL:从 psql 参数设置

按照这个关于限制 PostgreSQL 中每个查询的资源的答案,我被建议为查询执行设置超时值

SET statement_timeout TO '1min';
Run Code Online (Sandbox Code Playgroud)

这很好,但有时我想放宽对特定脚本的限制。

  • 有没有办法将超时设置为psql参数?我试过了psql --set statement_timeout=50,不成功。
  • 有没有办法从使用 psycopg2 的 Python 脚本中设置它?

postgresql performance ubuntu

8
推荐指数
1
解决办法
4626
查看次数

MySQL 用户对存储过程的权限

我创建了一个简单的存储过程:

mysql> CREATE FUNCTION hello (s CHAR(20))
    -> RETURNS CHAR(50) DETERMINISTIC
    -> RETURN CONCAT('Hello, ',s,'!');
Query OK, 0 rows affected, 1 warning (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

但未能运行它:

mysql> SELECT hello('world');
ERROR 1370 (42000): execute command denied to user ''@'localhost' for routine 'test.hello'
Run Code Online (Sandbox Code Playgroud)

我的用户名可能是空字符串吗?如何创建用户并授予权限?我可以授予用户对数据库中所有实体的所有权限吗?

mysql stored-procedures permissions users

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

显示域详细信息

在 PostgreSQL 中显示表的列和约束是通过以下方式完成的:

\d+ <table_name>
Run Code Online (Sandbox Code Playgroud)

其中列出了表的列、数据类型和修饰符。

如何显示 Posgresql的详细信息和约束?

postgresql domain

8
推荐指数
1
解决办法
3789
查看次数

为什么 to_char 不是 IMMUTABLE,我该如何解决?

如何索引to_char()列的 a ?

我试过了:

adam_db=> CREATE INDEX updates_hourly_idx 
          ON updates (to_char(update_time, 'YYYY-MM-DD HH24:00'));
Run Code Online (Sandbox Code Playgroud)

但是得到了错误:

错误:必须标记索引表达式中的函数 IMMUTABLE

这看起来很奇怪,因为to_char()时间戳是相当不可变的。

任何想法如何生成该索引?

postgresql index string-representation

7
推荐指数
1
解决办法
4704
查看次数

删除数字 id 后 PostgreSQL 9.3 上的完全死锁

问题 - 架构更改后完成数据库锁定

建筑学

我使用带有PostGIS的 PostgreSQL 9.3来存储位置更新。更新写入两个表 -location_updateslocation_updates_history.

每个人都有:

  • 一个自动递增的数字 id
  • 一个文字 car_id
  • geom 柱子

每次更新都会写入location_updates表,然后触发器函数会将相同的更新写入location_updates_history. 更新后,除最新的 10 个更新外,所有更新都car_id将被删除。因此,该location_update表以移动窗口的方式包含了每辆车的最新 10 次更新,并且该location_updates_history表包含了它的完整历史记录。

改变

我发现我只需要每辆车的最新更新,而不是最新的 10,所以我运行以下命令:

DROP TRIGGER location_update_insertion_trigger ON location_update;
DELETE FROM location_update WHERE id NOT IN 
            (SELECT max(id) FROM location_update GROUP BY cat_id);
ALTER TABLE location_update DROP COLUMN id CASCADE;
ALTER TABLE location_update ADD PRIMARY KEY (car_id);
Run Code Online (Sandbox Code Playgroud)

经过几个小时的工作,数据库处于完全锁定状态 - 非常糟糕,甚至其架构上的 pg_dump 也被阻止了。

在 …

deadlock postgresql-9.3

7
推荐指数
0
解决办法
565
查看次数

PostgreSQL 9.3:转储数据库,不包括某些表的数据

考虑一个有几十个正常大小的表和一些大表的生产数据库。

我正在pg_dump为我自己的本地笔记本电脑寻找一种方便的方法来访问数据库内容,不包括几个大表。\COPY如果我偶尔需要处理这些表,我可以使用 轻松转储大表的小样本。

如果我使用 --exclude-table=table参数,则大表的架构和数据都将被省略,这会破坏在本地开发环境中期望这些表的查询。

有没有办法转储具有完整模式的数据库,不包括某些给定表的内容

postgresql-9.3 pg-dump

7
推荐指数
1
解决办法
8935
查看次数

MySQL用逗号格式化数字

如何用逗号分隔每三位数字打印数字的整数部分?

例如,

 12345    -> 12,345
 1234.567 -> 1,234.567
Run Code Online (Sandbox Code Playgroud)

mysql number-formatting

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