From: | "Dmitry E(dot) Oboukhov" <unera(at)debian(dot)org> |
---|---|
To: | pgsql-ru-general(at)lists(dot)postgresql(dot)org |
Subject: | Re: VARCHAR(32) в VARCHAR(64) или TEXT |
Date: | 2018-04-19 13:49:04 |
Message-ID: | 20180419134904.oxutdfs54zdtu6rk@vdsl.uvw.ru |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-ru-general |
> melkij=> create table altervarchar(i int, v varchar(32));
> CREATE TABLE
> melkij=> insert into altervarchar select g, 'fdsfods' || g from generate_series(1,1e7) g;
> INSERT 0 10000000
> melkij=> create index on altervarchar (v);
> CREATE INDEX
> melkij=> set statement_timeout to '1s';
> SET
> melkij=> \timing
> Секундомер включён.
> melkij=> alter table altervarchar alter column v type varchar(64);
> ALTER TABLE
> Время: 1,530 мс
> melkij=> \dt+ altervarchar
> Список отношений
> Схема | Имя | Тип | Владелец | Размер | Описание
> ------------+--------------+---------+----------+--------+----------
> monitoring | altervarchar | таблица | melkij | 498 MB |
> (1 строка)
> Это 9.6 на HDD, за полторы мс полгигабайта не прожуют явно. Индекс как можно заметить не мешает сам по себе.
> А у вас какая версия и не отличается ли чем alter table?
у меня 9.5 и v not null поле.
по v построено несколько индексов (есть уникальный [gid::integer, v])
а так все остальное - так же
ALTER TABLE orders ALTER COLUMN "orderid" TYPE VARCHAR(64);
вешается запрос в статусе disk
13416 postgres 20 0 28G 13G disk 2:19 6.26% 28.04% postgres: tst tst 127.0.0.1(48588) ALTER TABLE
все прочие уходят в статус waiting и все.
дольше 30 секунд ждать не пытался - БД живая.
видимо придется через промежуточный столбик делать.
--
. ''`. Dmitry E. Oboukhov <unera(at)debian(dot)org>
: :’ :
`. `~’ GPG key: 4096R/08EEA756 2014-08-30
`- 71ED ACFC 6801 0DD9 1AD1 9B86 8D1F 969A 08EE A756
From | Date | Subject | |
---|---|---|---|
Next Message | Dmitry E. Oboukhov | 2018-04-19 16:17:58 | А вот кстати, как быстро заполнить столбик? |
Previous Message | Sergei Kornilov | 2018-04-19 09:54:56 | Re: VARCHAR(32) в VARCHAR(64) или TEXT |