Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите настроить PostgreSQL / 20 сообщений из 20, страница 1 из 1
12.09.2006, 15:47
    #33981380
Master Alex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите настроить PostgreSQL
День добрый.

Надеюсь, что местные гуру помогут решить данную проблему.

Конфигурация тестовой машины:
PostgreSQL 8.1.4 on i686-pc-mingw32, compiled by GCC gcc.exe (GCC) 3.4.2 (mingw-special) под WinXP Prof SP2 (NTFS), P4-2600 HT, 512 MB RAM, IDE Maxtor (70 GB).

postgresql.conf
work_mem = 16192
shared_buffers = 4096
sort_mem = 4096
temp_buffers = 1000

Тестируя приложение на локальной базе (пара табличек максимальная всего 250 тыс. записей) обратил внимание на чудовищные с моей точки зрения тормоза по сравнению с MySQL 5.0.24-community-nt.

Примеры:

CREATE TABLE "public"."fares" (
"ID" INTEGER NOT NULL,
"FaRecordLength" VARCHAR(4),
"FaRecordType" VARCHAR(2),
"FaID" VARCHAR(10) NOT NULL,
"FaBlockID" VARCHAR(19) NOT NULL,
"FaAktion" VARCHAR(1),
"FaTkRef" VARCHAR(18),
"FaRlRef" VARCHAR(18),
"FaRtRef" VARCHAR(900),
"FaTariffTitle" VARCHAR(20),
"FaStructDeparture" VARCHAR(60),
"FaStructArrival" VARCHAR(273),
"FaValidPairs" VARCHAR(128),
"FaSeasonCode" VARCHAR(3),
"FaLastReturn" VARCHAR(8),
"FaAdtRt" VARCHAR(1),
"FaChdRt" VARCHAR(1),
"FaInfRt" VARCHAR(1),
"FaAdtOw" VARCHAR(11),
"FaChdOw" VARCHAR(1),
"FaInfOw" VARCHAR(1),
"FaAdtRtNet" VARCHAR(11),
"FaAdtOwNet" VARCHAR(11),
"FaAdtRtTkt" VARCHAR(11),
"FaAdtOwTkt" VARCHAR(11),
"FaChdDiscount" VARCHAR(3),
"FaChdIata" VARCHAR(1),
"FaInfDiscount" VARCHAR(3),
"FaInfIata" VARCHAR(1),
"FaBlackOutDates" VARCHAR(80),
"FaDatePurchase" VARCHAR(8),
"FaLastDatePurchase" VARCHAR(8),
"FaNotesIn" VARCHAR(4),
"FaNotesOut" VARCHAR(1),
"FaBruttoNettoSwitch" VARCHAR(1),
"FaFareSeekCode" VARCHAR(1),
"FaBlackOutDatesOut" VARCHAR(32),
"FaBroker" VARCHAR(29),
"FaAdtRtMinSelling" VARCHAR(6),
"FaAdtOwMinSelling" VARCHAR(6),
"FaCommissionRtAdt" VARCHAR(6),
"FaCommissionOwAdt" VARCHAR(6),
"crc" VARCHAR(32),
CONSTRAINT "fares_pkey" PRIMARY KEY("ID")
) WITHOUT OIDS;

CREATE INDEX "fares_idx" ON "public"."fares"
USING btree ("crc");

1. запрос
select count(*) from
(
select count(*), crc
from fares
group by crc
having count(*) > 1
) test


PG: 55 sec (повтор - 49 sec).
MySQL: 7 sec (повтор - 0.5 sec).

2. select max(LENGTH("FaRtRef")) from fares

PG: 18 sec (повтор 16 sec.)
MySQL: 1 sec (повтор - 0.7 sec).

3. PS. Таблица fares_new копия таблицы fares,
только с количеством записей +~1000

select count(*) from fares_new
where crc not in (
select crc
from fares
where fares.crc = fares_new.crc )

PG: 109 sec (повтор 79 sec.)
MySQL: 4 sec (повтор - 3 sec).

Подскажите, пожалуйста, какие настройки надо подкрутить у PG, чтобы избавиться от тормозов.

Заранее спасибо!

Алексей.
...
Рейтинг: 0 / 0
12.09.2006, 15:59
    #33981434
ездун
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите настроить PostgreSQL
У Постгреса count тормозной. Нужно строить костыли для быстрого получения общего кол-ва. Если нужна скорострельность - бери мускул на MyISAM'e (самый быстрый из существ.БД - но без транзакций), фичастость - постгри.
по настроикам http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html
...
Рейтинг: 0 / 0
12.09.2006, 15:59
    #33981435
Master Alex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите настроить PostgreSQL
PS. vacuum full analyze делал.
...
Рейтинг: 0 / 0
12.09.2006, 16:20
    #33981514
Master Alex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите настроить PostgreSQL
Тормозит, к сожалению, не только count(*):

2.
select max(LENGTH("FaRtRef")) from fares

PG: 18 sec (повтор 16 sec.)
MySQL: 1 sec (повтор - 0.7 sec).


4.
select * from fares_new
where crc not in (
select crc
from fares
where fares.crc = fares_new.crc )
limit 10

PG: 30 sec (повтор 79 sec.)
MySQL: 3 sec (повтор - 2.5 sec).

А разобраться хотелось бы именно с настройкой PG.
...
Рейтинг: 0 / 0
12.09.2006, 16:43
    #33981635
ChameLe0n
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите настроить PostgreSQL
shared_buffers = 4096 слишком мало. Те постгресс в памяти держит только 4096*8Kb данных. Попробуй увеличить например до 16384-32768(128-256Mb). sort_mem = 4096 можно тоже увеличить до 10240 например.
...
Рейтинг: 0 / 0
12.09.2006, 16:56
    #33981697
4321ё
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите настроить PostgreSQL
Master Alex 4.
select * from fares_new
where crc not in (
select crc
from fares
where fares.crc = fares_new.crc )
limit 10

PG: 30 sec (повтор 79 sec.)
MySQL: 3 sec (повтор - 2.5 sec).

а вот это надо переписать на внешнее объединение (или попробывать с EXCEPT)
...
Рейтинг: 0 / 0
12.09.2006, 18:32
    #33982080
Кувалдин Роман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите настроить PostgreSQL
Master AlexТормозит, к сожалению, не только count(*):

2.
select max(LENGTH("FaRtRef")) from fares
PG: 18 sec (повтор 16 sec.)
MySQL: 1 sec (повтор - 0.7 sec).



Есть хоть одна БД, в которой ЭТО не тормозит по умолчанию?
Построй функциональный индекс.

[quot Master Alex]
4.
select * from fares_new
where crc not in (
select crc
from fares
where fares.crc = fares_new.crc )
limit 10

PG: 30 sec (повтор 79 sec.)
MySQL: 3 sec (повтор - 2.5 sec).

А разобраться хотелось бы именно с настройкой PG.[quot Master Alex]

Перепиши с JOIN и опять же попробуй построить функциональный индекс.
Вообще, руки отрывать надо за такие запросы...

А в MySQL много чего не тормозит из-за ее файлово-индексного движка, но вот только ни на что сложнее веб-портала ее лучше не ставить.
...
Рейтинг: 0 / 0
12.09.2006, 18:46
    #33982130
Sad Spirit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите настроить PostgreSQL
ездунУ Постгреса count тормозной.
Это называется "Слышал звон..."

ChameLe0nshared_buffers = 4096 слишком мало. Те постгресс в памяти держит только 4096*8Kb данных. Попробуй увеличить например до 16384-32768(128-256Mb).

Суперсовет, при условии наличия у вопрошающего всего 512 метров памяти, ага.

Master Alex
work_mem = 16192
shared_buffers = 4096
sort_mem = 4096
temp_buffers = 1000

Читаем release notes к версии 8.0 и видим:
Release notes
Server configuration parameters SortMem and VacuumMem have been renamed to work_mem and maintenance_work_mem to better reflect their use. The original names are still supported in SET and SHOW.

Так откуда здесь взялся sort_mem? Да, и в какое значение выставлен effective_cache_size?


1. запрос
select count(*) from
(
select count(*), crc
from fares
group by crc
having count(*) > 1
) test


PG: 55 sec (повтор - 49 sec).
MySQL: 7 sec (повтор - 0.5 sec).

Можно посмотреть explain analyze запроса для postgres'а и его аналог для mysql?


select max(LENGTH("FaRtRef")) from fares


Строить индекс по length("FaRtRef"). Возможно переписать запрос в виде
Код: plaintext
1.
select length("FaRtRef") from fares order by length("FaRtRef") desc limit  1 ;


select count(*) from fares_new
where crc not in (
select crc
from fares
where fares.crc = fares_new.crc )

переписать в виде
Код: plaintext
1.
2.
3.
4.
5.
select count(*) from fares_new
where crc not in (
select crc
from fares
)
fares_new в подзапросе нахер не сдался.

А вообще тот факт, что "повторы" в mysql работают быстрее, а в postgres'е --- нет, говорит нам о том, что postgres нифига кэш не использует. Да и вообще для таблиц в 250 тыс записей десятки секунд на запрос --- величины невероятные. Там случаем память не кончилась, не свопит?
...
Рейтинг: 0 / 0
12.09.2006, 19:20
    #33982241
Кувалдин Роман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите настроить PostgreSQL
Инфа для размышления:

Взял две таблицы по одной целой колонке. В t1 загнал числа от 1 до 10000 по порядку, в t2 - от 2 до 20000 с шагом 2 (2, 4, 6...)

Результатом выполнения запроса во всех случаях является цифра 5000.

MaserAlex, обратите внимание на стоимости запросов:

Код: plaintext
1.
2.
3.
explain analyze 
select count(*) from t1 where id not in (
select id from t2 where t2.id=t1.id
);
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Aggregate  (cost=15286.20..15286.21 rows=1 width=0) (actual time=59.297..59.298 rows=1 loops=1)
  ->  Seq Scan on t1  (cost=0.00..15273.68 rows=5004 width=0) (actual time=0.074..56.934 rows=4999 loops=1)
        Filter: (NOT (subplan))
        SubPlan
          ->  Index Scan using t2_id_idx on t2  (cost=0.00..3.01 rows=1 width=4) (actual time=0.003..0.003 rows=1 loops=10009)
                Index Cond: (id = $0)
Total runtime: 59.396 ms

Код: plaintext
1.
2.
3.
explain analyze
select count(*) from (
select t1.id as id1, t2.id as id2 from t1 left join t2 on (t1.id=t2.id) where t2.id is null
) as tbl;
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Aggregate  (cost=470.26..470.27 rows=1 width=0) (actual time=28.697..28.697 rows=1 loops=1)
  ->  Merge Right Join  (cost=0.00..445.23 rows=10009 width=0) (actual time=0.109..26.483 rows=4999 loops=1)
        Merge Cond: ("outer".id = "inner".id)
        Filter: ("outer".id IS NULL)
        ->  Index Scan using t2_id_idx on t2  (cost=0.00..205.06 rows=10005 width=4) (actual time=0.015..4.629 rows=5006 loops=1)
        ->  Index Scan using t1_id_idx on t1  (cost=0.00..205.10 rows=10009 width=4) (actual time=0.008..9.199 rows=10013 loops=1)
Total runtime: 28.803 ms

Ну и напоследок:

Код: plaintext
1.
2.
3.
explain analyze 
select count(*) from t2 where id not in (
select id from t1
)
Код: plaintext
1.
2.
3.
4.
5.
6.
Aggregate  (cost=372.68..372.69 rows=1 width=0) (actual time=25.461..25.462 rows=1 loops=1)
  ->  Seq Scan on t2  (cost=180.11..360.18 rows=5002 width=0) (actual time=18.997..23.488 rows=5000 loops=1)
        Filter: (NOT (hashed subplan))
        SubPlan
          ->  Seq Scan on t1  (cost=0.00..155.09 rows=10009 width=4) (actual time=0.004..6.738 rows=10009 loops=1)
Total runtime: 25.840 ms

Запрсы нужно писать с умом, любовью и нежностью :-)


=====================================
Страну, в которой все ходят на бровях,
на колени не поставишь...
=====================================
...
Рейтинг: 0 / 0
12.09.2006, 19:23
    #33982247
Кувалдин Роман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите настроить PostgreSQL
Брешу. Первые два запроса - 4999, последний - 5000.


=====================================
Страну, в которой все ходят на бровях,
на колени не поставишь...
=====================================
...
Рейтинг: 0 / 0
12.09.2006, 19:28
    #33982254
Кувалдин Роман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите настроить PostgreSQL
Опять брешу. Просто числа 1-10 у меня в T1 повторялись :-)


=====================================
Страну, в которой все ходят на бровях,
на колени не поставишь...
=====================================
...
Рейтинг: 0 / 0
12.09.2006, 23:11
    #33982467
Master Alex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите настроить PostgreSQL
Всем спасибо за идеи по параметрам и корректировку запросов! После подкрутки и установки на нормальный сервер (Dual Xeon 2.8, 1GB) все залетало.
...
Рейтинг: 0 / 0
13.09.2006, 10:14
    #33983057
ChameLe0n
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите настроить PostgreSQL
Sad Spirit
ChameLe0nshared_buffers = 4096 слишком мало. Те постгресс в памяти держит только 4096*8Kb данных. Попробуй увеличить например до 16384-32768(128-256Mb).

Суперсовет, при условии наличия у вопрошающего всего 512 метров памяти, ага.

А вообще тот факт, что "повторы" в mysql работают быстрее, а в postgres'е --- нет, говорит нам о том, что postgres нифига кэш не использует. Да и вообще для таблиц в 250 тыс записей десятки секунд на запрос --- величины невероятные. Там случаем память не кончилась, не свопит?


Отличные выводы. Судя по тому что длина одной записи около 1.5-2k, а записей всего около 250к, + учитывая служебные данные => размер таблицы ~400-550Мб. Постгрессу отведено 4к shared_buffers(32 М). Отсюда думаю легко догадаться что постгрес во время запросов постоянно читает с дисков. А судя по запросам они почти все читали полностью таблицу.
...
Рейтинг: 0 / 0
13.09.2006, 18:59
    #33985331
Master Alex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите настроить PostgreSQL
К сожалению на 512 MB памяти мне так и не удалось добиться приемлемой производительности PG. Перепробовал кучу вариантов параметров настройки - все мимо - сервер стоит колом, шуршит диском и не использует индексы там, где их использует MySQL:

explain analyze
select count(*) from
(
select count(*), crc
from fares
group by crc
having count(*) > 1
) test

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
QUERY PLAN
Aggregate  (cost= 73284 . 45 .. 73284 . 46  rows= 1  width= 0 ) (actual time= 50374 . 987 .. 50374 . 987  rows= 1  loops= 1 )
  ->  GroupAggregate  (cost= 66339 . 97 .. 71432 . 21  rows= 148179  width= 36 ) (actual time= 49301 . 779 .. 50351 . 926  rows= 42787  loops= 1 )
        Filter: (count(*) >  1 )
        ->  Sort  (cost= 66339 . 97 .. 66964 . 75  rows= 249911  width= 36 ) (actual time= 49301 . 682 .. 49743 . 360  rows= 249911  loops= 1 )
              Sort Key: fares.crc
              ->  Seq Scan on fares  (cost= 0 . 00 .. 39487 . 11  rows= 249911  width= 36 ) (actual time= 14 . 326 .. 23288 . 953  rows= 249911  loops= 1 )
Total runtime:  50395 . 305  ms

по этому запросу плана выполнения получить не удалось - сервер ушел в стопор и не вернулся :(

select count(*) from fares_new
where crc not in (
select crc
from fares
)

Настройка сервера приаттачена. Если у кого будут идеи или опыт тюнинга PG на 512 MB памяти - welcome!
...
Рейтинг: 0 / 0
13.09.2006, 19:42
    #33985403
LeXa NalBat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите настроить PostgreSQL
Master Alexне использует индексыпопробуйте set enable_seqscan to off, и т. п.

Master Alex-> Seq Scan on fares (cost=0.00..39487.11 rows=249911 width=36) (actual time=14.326..23288.953 rows=249911 loops=1)даже seqscan работает 23 секунды. слишком долго. думаю что любой другой план не будет намного быстрее.

Master Alexпо этому запросу плана выполнения получить не удалось - сервер ушел в стопор и не вернулся :(в таких случаях можно смотреть explain, без analyze

Master Alexselect count(*) from fares_new
where crc not in (
select crc
from fares
)у меня по такому запросу получился план
Код: plaintext
1.
2.
3.
4.
 Aggregate  (cost=49.66..49.67 rows=1 width=0)
   ->  Seq Scan on fares_new  (cost=24.12..48.25 rows=565 width=0)
         Filter: (NOT (hashed subplan))
         SubPlan
           ->  Seq Scan on fares  (cost=0.00..21.30 rows=1130 width=34)
то есть seq-scan в квадрате. попробуйте запросы
Код: plaintext
1.
2.
3.
4.
5.
  select count(*) from
  (
    select crc from fares_new
    except
    select crc from fares
  ) as a
или
Код: plaintext
1.
2.
3.
4.
  select count(*) from
  (
    select fares.crc from fares_new left outer join fares using (crc)
  ) as a
  where crc is null
...
Рейтинг: 0 / 0
13.09.2006, 22:11
    #33985597
Sad Spirit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите настроить PostgreSQL
Master Alex
explain analyze
select count(*) from
(
select count(*), crc
from fares
group by crc
having count(*) > 1
) test

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
QUERY PLAN
Aggregate  (cost= 73284 . 45 .. 73284 . 46  rows= 1  width= 0 ) (actual time= 50374 . 987 .. 50374 . 987  rows= 1  loops= 1 )
  ->  GroupAggregate  (cost= 66339 . 97 .. 71432 . 21  rows= 148179  width= 36 ) (actual time= 49301 . 779 .. 50351 . 926  rows= 42787  loops= 1 )
        Filter: (count(*) >  1 )
        ->  Sort  (cost= 66339 . 97 .. 66964 . 75  rows= 249911  width= 36 ) (actual time= 49301 . 682 .. 49743 . 360  rows= 249911  loops= 1 )
              Sort Key: fares.crc
              ->  Seq Scan on fares  (cost= 0 . 00 .. 39487 . 11  rows= 249911  width= 36 ) (actual time= 14 . 326 .. 23288 . 953  rows= 249911  loops= 1 )
Total runtime:  50395 . 305  ms

Ну, и о чём нам говорит план выполнения? Сначала у нас 23 секунды читается с диска таблица. Потом с 23-й секунды до 50-й она сортируется. Очевидно, тоже на диске, т.к. в щедро выделенные 10 метров (work_mem) не помещается.

Хотелось бы посмотреть ещё на результат запроса
Код: plaintext
1.
select relpages from pg_class where relname in ('fares', 'fares_new');

В любом случае, этот запрос без Seq Scan не обойдётся --- особенности архитектуры PostgreSQL; MySQL, возможно, обходится просмотром по индексу. Да и формат хранения данных у него (в случае MyISAM) покомпактнее в разы, так что Seq Scan быстрее.

Вариантов ускорить Seq Scan (повторяю, без него тут всё равно не обойтись, enable_seqscan=off может только затормозить запрос) немного:
1) Добавить памяти
2) Поставить более шустрый диск (23 секунды на чтение таблицы!?)
3) Уменьшить размер таблицы.
4) Можно ещё прямо перед запросом (не в postgresql.conf!) выставить жырное значение work_mem, чтобы делалась не сортировка, а что-то типа hash aggregate. Но от первых 23 секунд это, скорее всего, не избавит.

Рекомендую крепко задуматься о третьем варианте: таблица из 43 полей, причём все, кроме id, имеют тип varchar? Слово "нормализация" о чём-нибудь говорит? :)
...
Рейтинг: 0 / 0
14.09.2006, 15:02
    #33987520
Master Alex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите настроить PostgreSQL
Sad SpiritНу, и о чём нам говорит план выполнения? Сначала у нас 23 секунды читается с диска таблица. Потом с 23-й секунды до 50-й она сортируется. Очевидно, тоже на диске, т.к. в щедро выделенные 10 метров (work_mem) не помещается.

Да, проблема, действительно оказалась в установках, еще раз покрутив их было найдено вот такое сочетание, которое давало вполне приемлемые результаты выполнения запросов:
Код: plaintext
1.
2.
3.
4.
5.
shared_buffers= 35000
work_mem      = 35000
temp_buffers  = 5000
maintenance_work_mem= 15000
effective_cache_size= 15000
random_page_cost= 2

Еще раз огромное спасибо всем за советы и за варианты запросов!
...
Рейтинг: 0 / 0
18.09.2006, 02:22
    #33992908
ShadyAngel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите настроить PostgreSQL
> "Сначала у нас 23 секунды читается с диска таблица. Потом с 23-й секунды до 50-й она сортируется. Очевидно, тоже на диске, т.к. в щедро выделенные 10 метров (work_mem) не помещается."

А откуда взяты цифры? Что то накосо просмотрев результат анализа не обнаружил числа 23.
...
Рейтинг: 0 / 0
18.09.2006, 08:38
    #33993003
Кувалдин Роман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите настроить PostgreSQL
ShadyAngel> "Сначала у нас 23 секунды читается с диска таблица. Потом с 23-й секунды до 50-й она сортируется. Очевидно, тоже на диске, т.к. в щедро выделенные 10 метров (work_mem) не помещается."

А откуда взяты цифры? Что то накосо просмотрев результат анализа не обнаружил числа 23.

actual time=14.326..23288.953
c 14 миллисекунды начала запроса по 23288 миллисекунду
...
Рейтинг: 0 / 0
18.09.2006, 11:07
    #33993295
Funny_Falcon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите настроить PostgreSQL
Sad SpiritРекомендую крепко задуматься о третьем варианте: таблица из 43 полей, причём все, кроме id, имеют тип varchar? Слово "нормализация" о чём-нибудь говорит? :)
Присоединяюсь: много полей типа VARCHAR(1) - храниться какой-то флаг?, ну так smallint или boolean лучше будет!!! Ибо VARCHAR(1) храниться как (минимум) 4байта - длинна(=1) и данные (подозреваю, тоже до 4 байт округленны).
Код: plaintext
1.
2.
3.
4.
5.
6.
"FaChdDiscount" VARCHAR( 3 ),
"FaAdtRtMinSelling" VARCHAR( 6 ),
"FaAdtOwMinSelling" VARCHAR( 6 ),
"FaCommissionRtAdt" VARCHAR( 6 ),
"FaCommissionOwAdt" VARCHAR( 6 ),
"FaInfDiscount" VARCHAR( 3 ),
Это я понимаю числа. Может NUMERIC будет лучше? Не уверен, но попробовать стоит.

Код: plaintext
1.
2.
"FaDatePurchase" VARCHAR( 8 ),
"FaLastDatePurchase" VARCHAR( 8 ),
Здесь проситься тип date !?
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите настроить PostgreSQL / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]