From: | Ali Kemal DEMIRCI <demirci(dot)alikemal(at)gmail(dot)com> |
---|---|
To: | Samed YILDIRIM <samed(at)reddoc(dot)net> |
Cc: | PostgreSQL Türkiye <pgsql-tr-genel(at)postgresql(dot)org> |
Subject: | Re: Çok veriyle çalışırken, veritabanı yapılan işlemi kesiyor. |
Date: | 2020-08-12 13:56:47 |
Message-ID: | CAJbJVuwS=+nrDi07AhRLE86X=qwTzHpBRWBUeiZMUe4hxRERqA@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-tr-genel |
Merhaba Samed bey,
Problem NVL komutundan kaynaklanıyormuş, NVL yerine COALESCE kullanınca
problem ortadan kalktı.
Orafce ile gelen NVL komutunu SELECT ifadesi içerisinde kullanırken problem
olmuyor, fakat CREATE TABLE ... AS SELECT ... şeklinde kullandığınızda bu
hata oluşuyor.
Aynı şekilde fonksiyon içerisinde NVL kullanırken de aynı hatayı verip
veritabanını restart yapıyor.
O zaman Orafce'nin kullanılması sakıncalı mıdır?
Yoksa başka birşeyler mi yapmak gerekiyor?
On Wed, Aug 12, 2020 at 4:00 PM Samed YILDIRIM <samed(at)reddoc(dot)net> wrote:
> Merhabalar Ali Bey,
>
> Gördüğüm kadarıyla Postgres'i varsayılan ayarları ile kullanıyorsunuz. Bu
> durum alabileceğiniz verimin altında kalmanıza neden olur. Sunucuyu
> yalnızca veritabanına koşturmak için kullanacaksanız, yapılandırmasını
> sistem kaynağına göre düzenlemenizi önemle tavsiye ederim. :)
>
> Postgis'den kaynaklı olarak segmentation fault alıyor olma ihtimaliniz
> bence düşük. Daha çok orafce'den şüphe ediyorum. Tavsiyem, bu sorgunuz
> özelinde orafce'ye bağımlı olan kısımları Postgres'in kendisinde bulunan
> alternatifler ile değiştirerek (NVL -> COALESCE gibi) sorgunuzu yeniden
> yazmanız, daha sonra da orafce'yi kaldırarak bu işlemi tekrar denemeniz
> olacak.
> Best regards.
> Samed YILDIRIM
>
>
>
> 12.08.2020, 15:40, "Ali Kemal DEMIRCI" <demirci(dot)alikemal(at)gmail(dot)com>:
>
> Merhaba Samed bey,
>
> Öncelikle pg_cron eklentisini kaldırdım ve yine aynı hatayı alıyorum.
>
> Söylediğiniz parametrelerin değerleri;
>
> session_preload_libraries|
> -------------------------|
> |
>
> shared_preload_libraries|
> ------------------------|
> |
>
> local_preload_libraries|
> -----------------------|
> |
>
> Sorularınızın cevapları;
>
> 1- PostgreSQL 12.3 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 8.3.1
> 20191121 (Red Hat 8.3.1-5), 64-bit
>
> 2- 30 GB Ram (28 GB Free),
> 16 Core CPU (% 95 Idle),
> 2.5 TB disk (1.4 TB Free)
>
> 3- postgresql.conf
> shared_buffers = 128MB
> dynamic_shared_memory_type = posix
> max_wal_size = 1GB
> min_wal_size = 80MB
>
> 4- Kurulu olan extension'lar
> postgis
> orafce
>
> 5- Subquery Scan on r (cost=463362.37..515099.44 rows=80000 width=282)
>
>
> |
> -> Limit (cost=463362.37..514299.44 rows=80000 width=534)
>
>
> |
> -> Hash Join (cost=463362.37..774820.91 rows=489166 width=534)
>
>
> |
> Hash Cond: (a.id_abone_adres_uavt = bf.id)
>
>
> |
> -> Hash Left Join (cost=439755.24..715093.91 rows=664869
> width=129)
>
> |
> Hash Cond: ((((((((((nvl(a.id_sayac_marka,
> '-9'::numeric))::text || '~'::text) || (nvl(a.sayac_capi,
> '-9'::integer))::text) || '~'::text) || (nvl(a.sayac_devirrakami,
> '-9'::numeric))::text) || '~'::text) || nvl(btrim(upper(a.sayac_tipi|
> -> Merge Right Join (cost=439714.19..687627.01
> rows=664869 width=147)
>
> |
> Merge Cond: (x.id_abone = a.id_abone)
>
>
> |
> -> GroupAggregate (cost=439713.76..460925.11
> rows=729055 width=86)
>
> |
> Group Key: x.id_abone, x.id_abone_tipi,
> x.bitis_tarihi, x.abone_durum
>
> |
> -> Sort (cost=439713.76..442497.92
> rows=1113664 width=78)
>
> |
> Sort Key: x.id_abone,
> x.id_abone_tipi, x.bitis_tarihi, x.abone_durum
>
> |
> -> Subquery Scan on x
> (cost=189912.33..228890.57 rows=1113664 width=78)
>
> |
> -> WindowAgg
> (cost=189912.33..217753.93 rows=1113664 width=84)
>
> |
> -> Sort
> (cost=189912.33..192696.49 rows=1113664 width=30)
>
> |
> Sort Key:
> sas.id_abone, sas.id_abone_sicil
>
> |
> -> Seq Scan on
> su_abone_sicil sas (cost=0.00..51416.64 rows=1113664 width=30)
>
> |
> -> Index Scan using sql121209005336850 on
> su_abone a (cost=0.42..210562.64 rows=664869 width=115)
>
> |
> Filter: (id_abone_adres_uavt IS NOT NULL)
>
>
> |
> -> Hash (cost=27.69..27.69 rows=1069 width=16)
>
>
> |
> -> Seq Scan on cs_meter_model_prm mmp
> (cost=0.00..27.69 rows=1069 width=16)
>
> |
> -> Hash (cost=13999.06..13999.06 rows=585606 width=6)
>
>
> |
> -> Seq Scan on gis_building_flat bf
> (cost=0.00..13999.06 rows=585606 width=6)
>
> |
>
>
>
>
> On Wed, Aug 12, 2020 at 1:22 PM Samed YILDIRIM <samed(at)reddoc(dot)net> wrote:
>
> Merhabalar,
>
> 1. Hangi PostgreSQL versiyonunu kullanıyorsunuz?
> 2. Sistem kaynakları nedir?
> 3. Yapılandırma ayalarınızı paylaşır mısınız.
> 4. Veritabanında hangi eklentileri kullanıyorsunuz?
> 5. Explain ile planı alarak paylaşır mısınız.
>
> En önemli soru 4. soru. Veritabanı "Segmentation fault" ile kapanıyor
> loglarınıza göre. Veritabanı bellek alamadım diye sonlanmıyor, sistem
> kaynaklarının yetersizliği ile alakalı olduğunu düşünmüyorum. Veritabanı
> süreçlerinden birisi, kendisine ait olmayan bir bellek alanını okumaya ya
> da yazmaya çalışıyor. Bu da en sık C ile yazılmış bir
> fonksiyonun/eklentinin içerisindeki hatalı bellek yönetiminden veya kodun
> içerisindeki buglardan kaynaklanır.
>
> Loglardan ilk gözüme çarpan pg_cron kullandığınız. Onu kaldırmayı
> deneyebilirsiniz. local_preload_libraries, session_preload_libraries ve
> shared_preload_libraries parametrelerinin değerlerini de kontrol
> ederseniz iyi olur.
>
> show session_preload_libraries;
> show shared_preload_libraries;
> show local_preload_libraries;
> Best regards.
> Samed YILDIRIM
>
>
>
> 12.08.2020, 12:17, "Ali Kemal DEMIRCI" <demirci(dot)alikemal(at)gmail(dot)com>:
>
> Merhaba arkadaşlar,
>
> Create table xxx as
> Select ....
> Limit 80000;
>
> Yukardaki SQL komutunu çalıştırdığımda aşağıdaki hatayı alıyorum;
>
> SQL Error [08006]: An I/O error occurred while sending to the backend.
>
> Fakat "Limit 70000" yaptığımda başarılı şekilde select ifadesinden dönen
> kayıtlarla tablo oluşturulabiliyor.
>
> Hat oluştuğunda log dosyasında oluşan kayıtlar aşağıdaki gibidir.
> Bu konuda yardımcı olabilirmisiniz?
>
> 2020-08-12 11:08:58.037 +03 [94157] LOG: server process (PID 6072) was
> terminated by signal 11: Segmentation fault
> 2020-08-12 11:08:58.037 +03 [94157] DETAIL: Failed process was running:
> create table cs_subscriber_ as
> select r.id_abone id, 1::numeric corporation_id, r.id_abone
> subscriber_number, 1::numeric area_id, r.abone_tipi subscriber_type_id,
> r.id_abone_adres_uavt building_flat_id,
> r.creuser created_user_id, r.credate created_timestamp,
> 0::numeric "version", r.address address_description
> from (select a.id_abone, a.abone_no, nvl(x.id_abone_tipi, 1)
> abone_tipi, a.id_abone_adres_uavt, bf.building_door_id,
> nvl(a.creuser,1::numeric) creuser , nvl(a.credate,
> '01/01/1900 00:00:00'::timestamp) credate, (a.a4_adr1 ||a.a4_adr2
> ||a.a4_adr3)::varchar address,
> mmp.id meter_model, a.sayac_no, a.sayac_konum,
> a.sayac_takma_tarihi, a.sayac_uretim_tarihi, to_char(a.sayac_uretim_tarihi,
> 'yyyy')::numeric uretim_yili,
> a.sayac_karttipi_adi, a.kart_sayac_mrk ,
> a.kart_sayac_no , a.kart_sayac_seri, a.sayac_konum, a.kayit_tarihi,
> a.aciklama, a.iptal_tarih,
> ('1'||lpad(a.defter_no::tex
> 2020-08-12 11:08:58.037 +03 [94157] LOG: terminating any other active
> server processes
> 2020-08-12 11:08:58.038 +03 [6074] WARNING: terminating connection
> because of crash of another server process
> 2020-08-12 11:08:58.038 +03 [6074] DETAIL: The postmaster has commanded
> this server process to roll back the current transaction and exit, because
> another server process exited abnormally and possibly corrupted shared
> memory.
> 2020-08-12 11:08:58.038 +03 [6074] HINT: In a moment you should be able
> to reconnect to the database and repeat your command.
> 2020-08-12 11:08:58.038 +03 [6030] WARNING: terminating connection
> because of crash of another server process
> 2020-08-12 11:08:58.038 +03 [6030] DETAIL: The postmaster has commanded
> this server process to roll back the current transaction and exit, because
> another server process exited abnormally and possibly corrupted shared
> memory.
> 2020-08-12 11:08:58.038 +03 [6030] HINT: In a moment you should be able
> to reconnect to the database and repeat your command.
> 2020-08-12 11:08:58.038 +03 [6073] WARNING: terminating connection
> because of crash of another server process
> 2020-08-12 11:08:58.038 +03 [6073] DETAIL: The postmaster has commanded
> this server process to roll back the current transaction and exit, because
> another server process exited abnormally and possibly corrupted shared
> memory.
> 2020-08-12 11:08:58.038 +03 [6073] HINT: In a moment you should be able
> to reconnect to the database and repeat your command.
> 2020-08-12 11:08:58.038 +03 [6075] WARNING: terminating connection
> because of crash of another server process
> 2020-08-12 11:08:58.038 +03 [6075] DETAIL: The postmaster has commanded
> this server process to roll back the current transaction and exit, because
> another server process exited abnormally and possibly corrupted shared
> memory.
> 2020-08-12 11:08:58.038 +03 [6075] HINT: In a moment you should be able
> to reconnect to the database and repeat your command.
> 2020-08-12 11:08:58.038 +03 [6056] WARNING: terminating connection
> because of crash of another server process
> 2020-08-12 11:08:58.038 +03 [6056] DETAIL: The postmaster has commanded
> this server process to roll back the current transaction and exit, because
> another server process exited abnormally and possibly corrupted shared
> memory.
> 2020-08-12 11:08:58.038 +03 [6056] HINT: In a moment you should be able
> to reconnect to the database and repeat your command.
> 2020-08-12 11:08:58.038 +03 [6022] WARNING: terminating connection
> because of crash of another server process
> 2020-08-12 11:08:58.038 +03 [6022] DETAIL: The postmaster has commanded
> this server process to roll back the current transaction and exit, because
> another server process exited abnormally and possibly corrupted shared
> memory.
> 2020-08-12 11:08:58.038 +03 [6022] HINT: In a moment you should be able
> to reconnect to the database and repeat your command.
> 2020-08-12 11:08:58.041 +03 [94157] LOG: all server processes
> terminated; reinitializing
> 2020-08-12 11:08:58.066 +03 [6086] LOG: database system was interrupted;
> last known up at 2020-08-12 11:08:46 +03
> 2020-08-12 11:08:58.093 +03 [6087] FATAL: the database system is in
> recovery mode
> 2020-08-12 11:08:58.373 +03 [6088] FATAL: the database system is in
> recovery mode
> 2020-08-12 11:08:58.415 +03 [6089] FATAL: the database system is in
> recovery mode
> 2020-08-12 11:08:58.449 +03 [6090] FATAL: the database system is in
> recovery mode
> 2020-08-12 11:08:58.493 +03 [6086] LOG: database system was not properly
> shut down; automatic recovery in progress
> 2020-08-12 11:08:58.504 +03 [6086] LOG: redo starts at EC/8764F088
> 2020-08-12 11:08:58.600 +03 [6086] LOG: invalid record length at
> EC/88476D80: wanted 24, got 0
> 2020-08-12 11:08:58.600 +03 [6086] LOG: redo done at EC/88476CB8
> 2020-08-12 11:08:58.675 +03 [94157] LOG: database system is ready to
> accept connections
> 2020-08-12 11:08:58.679 +03 [6101] LOG: pg_cron scheduler started
>
> --
> Saygılarımla,
>
> Ali Kemal DEMİRCİ
>
>
>
> --
> Saygılarımla,
>
> Ali Kemal DEMİRCİ
>
>
--
Saygılarımla,
Ali Kemal DEMİRCİ
From | Date | Subject | |
---|---|---|---|
Next Message | Samed YILDIRIM | 2020-08-12 14:11:01 | Re: Çok veriyle çalışırken, veritabanı yapılan işlemi kesiyor. |
Previous Message | Samed YILDIRIM | 2020-08-12 13:00:30 | Re: Çok veriyle çalışırken, veritabanı yapılan işlemi kesiyor. |