Windows-da 1c va postgres o'rnatish. PostgreSQL-ni o'rnating. Tashqi ma'lumotlar manbasini ulash

Ushbu maqola barcha PostgreSQL konfiguratsiya opsiyalarining to'liq taqdimoti deb da'vo qilmaydi va qiyosiy testda men barcha ma'lumotlar bazasi ish rejimlarini qamrab olmayman. Men qiziquvchilarga havola orqali kitobni o'rganishni maslahat beraman

Kirish

Men PostgreSQL bilan ko'p ishladim va bu ajoyib DBMS deb o'ylayman. Menda juda katta hajmdagi ma'lumotlarni bir zumda qayta ishlaydigan ko'p gigabaytli ishlaydigan ma'lumotlar bazasi (1C emas) bor. PostgreSQL indekslardan juda yaxshi foydalanadi, parallel ish yuklarini yaxshi bajara oladi, saqlangan protseduralarning funksionalligi a'lo darajada, yaxshi boshqaruv va ishlash vositalari mavjud va hamjamiyat yaratgan. foydali kommunal xizmatlar. Ammo 1C ma'murlarining ko'pchiligi PostgreSQL haqida yomon fikrda ekanligi, u sekin va ma'lumotlar bazasining fayl versiyasidan zo'rg'a oshib ketishi va vaziyatni faqat MSSQL saqlab qolishi meni hayratda qoldirdi.

Savolni o'rganib chiqqanimdan so'ng, men Linux va Windows-da qo'g'irchoqlar uchun PostgreSQL-ni bosqichma-bosqich o'rnatish bo'yicha ko'plab maqolalarni topdim. Ammo maqolalarning aksariyati o'rnatishni "o'rnatilgunga qadar - ma'lumotlar bazasini yaratamiz" tasvirlaydi va umuman konfiguratsiya masalasiga tegmang. Qolganlarida konfiguratsiya faqat "bunday qiymatlarni ko'rsating" darajasida eslatib o'tiladi, nima uchun deyarli hech qanday izoh berilmaydi.

Va agar "bir tugmani o'rnatish" yondashuvi MSSQL va umuman Windows uchun ko'plab mahsulotlarga tegishli bo'lsa, afsuski, bu PostgreSQL uchun qo'llanilmaydi. Standart sozlamalar uning xotirasidan foydalanishni sezilarli darajada cheklaydi, shuning uchun uni hatto kalkulyatorga ham o'rnatishingiz mumkin va u dasturiy ta'minotning qolgan qismining ishlashiga xalaqit bermaydi. PostgreSQL ma'lum bir tizim uchun sozlanishi kerak va shundan keyingina u o'zining eng yaxshisini ko'rsatishi mumkin. Ayniqsa og'ir holatlarda siz PostgreSQL, ma'lumotlar bazasi va sozlamalarini sozlashingiz mumkin fayl tizimi bir-biriga, lekin bu ko'proq Linux tizimlariga taalluqlidir, bu erda hamma narsani sozlash uchun ko'proq imkoniyatlar mavjud.

Eslatib o'tamiz, 1C uchun DBMS ishlab chiquvchilarining PostgreSQL yig'ilishi mos emas, faqat yamalgan 1C manba kodlaridan yig'ilgan. Tayyor mos yig'ilishlar 1C (ITS disklari va qo'llab-quvvatlash obunasi bo'lganlar uchun hisob orqali) va EterSoft tomonidan taklif etiladi.

Test sinovlari o'tkazildi Windows muhiti, lekin barcha konfiguratsiya tavsiyalari platformaga xos emas va har qanday OS uchun amal qiladi.

Sinov va taqqoslash

Sinov paytida men barcha ish rejimlari va stsenariylarida testlarni o'tkazishni maqsad qilganim yo'q, faqat muvaffaqiyatli konfiguratsiyani taxminiy tekshirish.

Sinov uchun men quyidagi konfiguratsiyadan foydalandim:
Xost mashinasi: Win7, Core i5-760 2,8 MGts, 4 yadro, 12 Gb tezkor xotira, VMWare 10
Virtual: Win7 x64, 2 yadroli, 4GB RAM, alohida jismoniy qattiq disk ma'lumotlar bazasini joylashtirish uchun (SSD emas)
MSSQL Express 2014
PostgreSQL EtherSoft 9.2.1
1C 8.3.5 1383

Ma'lumotlar bazasi ishlatilgan, dt-upload 780MB.
Ma'lumotlar bazasini tiklagandan so'ng:
fayl hajmi 1CD fayl versiyasida - 10 GB,
PostgreSQL ma'lumotlar bazasi hajmi - 8 GB,
MSSQL ma'lumotlar bazasi hajmi 6,7 GB.

Sinov uchun men turli registrlardan qo'shimcha ma'lumotlarni tanlash bilan kontragent shartnomalari namunasi (21k) so'rovidan foydalandim; har bir shartnoma uchun registrlardan alohida namuna tuzilgan. Men qo'lda bo'lgan konfiguratsiyani oldim - Buxgalteriya 3.0 asosida jiddiy o'zgartirilgan.

Sinov paytida men barqaror natijalar olinmaguncha bir va ikkita mijoz bilan so'rovni bir necha marta bajardim. Men birinchi yugurishlarni e'tiborsiz qoldirdim.

Bitta mijoz bilan sinov:

SSD-ga joylashtirilgan ma'lumotlar bazasi bilan fayl versiyasidan xostdan namuna olish - 31c
Fayl variantidan tanlash virtual mashina(bilan qattiq disk) - 46s
MSSQL ma'lumotlar bazasidan namuna olish - birinchi o'tish - 25s yoki 9s (ko'rinishidan ma'lumotlar bazasi keshining dolzarbligiga qarab) (DBMS jarayoni tomonidan xotira iste'moli taxminan 1,3 Gb edi)
Standart sozlamalar bilan PostgreSQL dan namuna olish - 43 soniya (xotira sarfi har bir ulanish uchun 80 MB dan oshmaydi)
Optimallashtirilgan PostgreSQL-dan namuna olish - 21s (xotira iste'moli har bir ulanish uchun 120 MB edi)

Ikki mijoz bilan sinov:

SSD-ga joylashtirilgan ma'lumotlar bazasi bilan fayl versiyasidan xostda namuna olish - har biri 34 soniya
Virtual mashinadagi fayl versiyasidan namuna olish (qattiq diskdan) - har biri 56 soniya
MSSQL ma'lumotlar bazasidan namuna olish - 50s yoki 20s (ko'rinishidan DBMS keshining ahamiyatiga qarab)
Standart sozlamalar bilan PostgreSQL dan namuna olish - har biri 60 soniya
Optimallashtirilgan PostgreSQL dan namuna olish - har biri 40 soniya

Sinov eslatmalari:

  1. Uchinchi yadroni qo'shgandan so'ng, PostgreSQL va MSSQL variantlari "ikki mijoz" testida deyarli "bitta mijoz" testining ishlashi bilan ishlay boshladi, ya'ni. muvaffaqiyatli parallellashtirildi. Ikki yadro ustida ishlashni parallellashtirishga nima to'sqinlik qildi, men uchun sir bo'lib qoldi.
  2. MSSQL bir vaqtning o'zida juda ko'p xotirani egalladi, PostgreSQL barcha rejimlarda sezilarli darajada kamroq talab qiladi va so'rovni tugatgandan so'ng deyarli barchasini chiqaradi.
  3. MSSQL yagona jarayon sifatida ishlaydi. PostgreSQL ulanish + xizmat jarayonlari uchun alohida jarayonni ishga tushiradi. Bu hatto 32-bitli variantga ham bir nechta mijozlar so'rovlarini qayta ishlashda xotiradan samarali foydalanish imkonini beradi.
  4. Quyida ko'rsatilgan qiymatlardan yuqori sozlamalarda PostgreSQL uchun xotirani ko'paytirish unumdorlikning sezilarli o'sishiga olib kelmadi.
  5. Barcha holatlarda birinchi testlar keyingi o'lchovlarga qaraganda uzoqroq davom etdi; Men hech qanday maxsus o'lchovlarni o'tkazmadim, lekin MSSQL sub'ektiv ravishda tezroq boshlandi.

PostgreSQL sozlanmoqda

PostgreSQL-ni sozlash va optimallashtirish haqida rus tilida ajoyib kitob mavjud: Har bir filni sevuvchilar uchun ushbu havolani belgilash mantiqiy. Kitobda ma'lumotlar bazasini optimallashtirish, xatolarga chidamli va taqsimlangan tizimlarni yaratishning ko'plab usullari tasvirlangan. Ammo endi biz hamma uchun foydali bo'lgan narsani ko'rib chiqamiz - xotiradan foydalanishni sozlash. PostgreSQL sozlamalarda ruxsat etilganidan ko'proq xotira ishlatmaydi va standart sozlamalar bilan PostgreSQL minimal xotiradan foydalanadi. Shu bilan birga, foydalanish uchun mavjud bo'lganidan ko'proq xotirani ko'rsatmaslik kerak - tizim server ishlashi uchun barcha dahshatli oqibatlarga olib keladigan almashtirish faylidan foydalanishni boshlaydi. PostgreSQL-ni sozlash bo'yicha bir qator maslahatlar ITS diskida berilgan.

Windows tizimida PostgreSQL konfiguratsiya fayllari Ma'lumotlar katalogidagi o'rnatish katalogida joylashgan:

  • postgresql.conf- DBMS sozlamalari bilan asosiy fayl
  • pg_hba.conf- mijozlar uchun kirish sozlamalari bo'lgan fayl. Xususan, bu erda siz qaysi foydalanuvchilar qaysi IP-manzillar ma'lum ma'lumotlar bazalariga ulanishi mumkinligini va foydalanuvchi parolini tekshirish kerakmi yoki yo'qligini va agar shunday bo'lsa, qanday usul bilan belgilashingiz mumkin.
  • pg_ident.conf- foydalanuvchi nomlarini tizimdan ichkiga o'zgartiradigan fayl (ko'pchilik foydalanuvchilarga kerak bo'lmaydi)

Fayllar matnli, siz ularni bloknot yordamida tahrirlashingiz mumkin. bilan boshlanadigan qatorlar # sharhlar hisoblanadi va e'tiborga olinmaydi.

Xotira hajmi bilan bog'liq parametrlar kB, MB, GB qo'shimchalari bilan to'ldirilishi mumkin - kilobaytlar, megabaytlar, gigabaytlar, masalan, 128MB. Vaqt oraliqlarini tavsiflovchi parametrlar ms, s, min, h, d - millisekundlar, soniyalar, daqiqalar, soatlar, kunlar, masalan, 5min qo'shimchalari bilan to'ldirilishi mumkin.

Agar siz Postgress uchun parolni unutgan bo'lsangiz, bu muammo emas, uni yozishingiz mumkin pg_hba.conf qator:

Barcha 127.0.0.1/32 ishonchiga mezbonlik qiling

Va har qanday foydalanuvchi tomonidan ulanish (masalan, postgres) parolni tekshirmasdan 127.0.0.1 da mahalliy mashinadagi ma'lumotlar bazasiga.

Optimallashtirish xotiradan foydalanish

Xotiradan foydalanish sozlamalari ichida joylashgan postgresql.conf

Optimal parametr qiymatlari bo'sh hajmga bog'liq tasodifiy kirish xotirasi, ma'lumotlar bazasi hajmi va ma'lumotlar bazasining alohida elementlari (jadvallar va indekslar), so'rovlarning murakkabligi (asosan, so'rovlar juda murakkab bo'ladi deb taxmin qilish kerak - so'rovlarda bir nechta ulanishlar odatiy stsenariy) va bir vaqtning o'zida faol mijozlar. Aytgancha, PostgreSQL ma'lumotlar bazasi jadvallari va indekslarini saqlaydi alohida fayllar (<каталог установки PG>\ma'lumotlar\baza\<идентификатор БД>\) va ob'ektlarning o'lchamlarini taxmin qilish mumkin. Shuningdek, siz taqdim etilgan pgAdmin yordam dasturidan ma'lumotlar bazasiga ulanish, "Sxemalar" - "ommaviy" ni kengaytirish va "Jadvallar" elementi uchun statistik hisobotni yaratish uchun foydalanishingiz mumkin.

Keyinchalik, siz sozlashni boshlashingiz mumkin bo'lgan taxminiy qiymatlarni beraman. Keyin dastlabki sozlash Serverni ish rejimlarida ishga tushirish va xotira sarfini kuzatish tavsiya etiladi. Olingan natijalarga qarab, parametr qiymatlarini moslashtirish kerak bo'lishi mumkin.

Sinov uchun serverni sozlashda men quyidagi hisob-kitoblarga tayandim:
Faqat 4 GB operativ xotira. Iste'molchilar - Windows OS, 1C server, PostgreSQL va tizim diskining keshi. DBMS uchun 2,5 Gb gacha operativ xotira ajratilishi mumkin deb o'yladim

Qiymatlar kB, MB, GB qo'shimchalari bilan belgilanishi mumkin (kilobayt, megabayt yoki gigabaytdagi qiymatlar). Qiymatlarni o'zgartirgandan so'ng, PostgreSQL xizmatini qayta ishga tushirishingiz kerak.

shared_buffers - Umumiy server buferi

Barcha ulanishlar tomonidan baham ko'rilgan PostgreSQL o'qish va yozish keshi hajmi. Agar ma'lumotlar keshda bo'lmasa, u diskdan o'qiladi (ehtimol OS tomonidan keshlangan)

Agar bufer hajmi tez-tez ishlatiladigan ish ma'lumotlarini saqlash uchun etarli bo'lmasa, u OS keshidan yoki diskdan doimiy ravishda yoziladi va o'qiladi, bu esa ishlashga juda salbiy ta'sir qiladi.

Lekin bu operatsiya uchun zarur bo'lgan barcha xotira emas, siz juda ko'p narsani ko'rsatmasligingiz kerak katta ahamiyatga ega, aks holda mijoz so'rovlarini amalda bajarish uchun (va qancha ko'p bo'lsa, xotira iste'moli shunchalik yuqori) va OS va boshqa ilovalar uchun, masalan, 1C server jarayoni uchun xotira qolmaydi. Server, shuningdek, OS keshiga tayanadi va tizim tomonidan keshlanganini o'z buferida saqlamaslikka harakat qiladi.

Ishlatilgan test

shared_buffers = 512MB

work_mem- saralash, ma'lumotlarni yig'ish va boshqalar uchun xotira.

Har bir so'rov uchun, ehtimol, murakkab so'rovlar uchun bir necha marta ajratilgan. Agar xotira yetarli bo'lmasa, PostgreSQL vaqtinchalik fayllardan foydalanadi. Agar qiymat juda katta bo'lsa, RAM haddan tashqari ishlatilishi mumkin va OS ishlashning mos keladigan pasayishi bilan almashtirish faylidan foydalanishni boshlaydi.

Hisoblashda mavjud xotira miqdorini minus olish tavsiya etiladi shared_buffers, va bir vaqtning o'zida bajarilgan so'rovlar soniga bo'ling. Murakkab so'rovlar bo'lsa, bo'linuvchini oshirish kerak, ya'ni. natijani kamaytiring. Ko'rib chiqilayotgan ish uchun 5 faol foydalanuvchi (2.5GB-0.5GB (shared_buffers))/5=400MB asosida. Agar DBMS so'rovlarni juda murakkab deb hisoblasa yoki qo'shimcha foydalanuvchilar paydo bo'lsa, qiymatni kamaytirish kerak bo'ladi.

Oddiy so'rovlar uchun kichik qiymatlar etarli - bir necha megabaytgacha, ammo murakkab so'rovlar uchun (va bu 1C uchun odatiy stsenariy) ko'proq talab qilinadi. Tavsiya - 1-4 GB xotira uchun siz 32-128 MB qiymatlardan foydalanishingiz mumkin. Men uni testda ishlatganman

work_mem = 128MB

texnik_ish_mem- axlat yig'ish buyruqlari, statistika, indeks yaratish uchun xotira.

Qiymatni eng katta jadval yoki indeks hajmining 50-75% gacha o'rnatish tavsiya etiladi, ammo tizim va ilovalarni ishga tushirish uchun etarli xotira mavjud. Ish_mem dan kattaroq qiymatlarni belgilash tavsiya etiladi. Men uni testda ishlatganman
care_work_mem = 192MB

temp_buferlar- vaqtinchalik ob'ektlar uchun bufer, asosan vaqtinchalik jadvallar uchun.

Taxminan 16 MB o'rnatishingiz mumkin. Men uni testda ishlatganman
temp_buferlar = 32 MB

samarali_kesh_hajmi- fayl tizimi disk keshining taxminiy hajmi.

Optimallashtiruvchi ushbu qiymatdan so'rovlar rejasini tuzishda keshda (tezkor tasodifiy kirish bilan) yoki sekin diskda ma'lumotlarning topilish ehtimolini baholash uchun foydalanadi. Windows-da kesh uchun ajratilgan joriy xotira hajmini vazifa menejerida ko'rish mumkin.

Avtovakuum - "axlat yig'ish"

PostgreSQL, "versiyalangan" DBMS ning odatiy vakili sifatida (blokirovka qilishdan farqli o'laroq), ma'lumotlarni o'zgartirishda jadvallar va yozuvlarni tranzaktsiyalarni o'qishdan mustaqil ravishda bloklamaydi (1C holatida, 1C serverining o'zi buni qiladi). Buning o'rniga, o'zgartirilgan yozuvning nusxasi yaratiladi, u keyingi tranzaktsiyalarda ko'rinadi, mavjudlari esa tranzaksiya boshida mavjud bo'lgan ma'lumotlarni ko'rishda davom etadi. Natijada, eskirgan ma'lumotlar jadvallarda to'planadi - oldingi versiyalar yozuvlarni o'zgartirdi. DBMS bo'shatilgan joydan foydalanishi uchun "axlat yig'ish" ni bajarish kerak - qaysi yozuvlar endi ishlatilmasligini aniqlash uchun. Bu SQL buyrug'i bilan aniq amalga oshirilishi mumkin VAKUUM, yoki stol avtomatik axlat yig'uvchi tomonidan qayta ishlanishini kuting - AVTOVAKUUM. Bundan tashqari, ma'lum bir versiyagacha axlat yig'ish statistik ma'lumotlarni yig'ish bilan bog'liq edi (rejalashtiruvchi optimal so'rov rejasini tuzish uchun jadvallardagi yozuvlar soni va indekslangan maydonlar qiymatlarini taqsimlash to'g'risidagi ma'lumotlardan foydalanadi). Bir tomondan, axlat yig'ish jadvallar o'smasligi va disk maydonidan samarali foydalanishi uchun bajarilishi kerak. Boshqa tomondan, to'satdan boshlangan axlat yig'ish disk va jadvallarga qo'shimcha yuk beradi, bu esa so'rovlarni bajarish vaqtini ko'paytirishga olib keladi. Shunga o'xshash effekt avtomatik statistik yig'ish orqali yaratiladi (aniqki, uni buyruq bilan ishga tushirish mumkin TAHLIL QILING yoki axlat yig'ish bilan birga VAKUUM TAHLILI). Va PostgreSQL ushbu mexanizmlarni minimallashtirish uchun versiyadan versiyaga yaxshilaydi Salbiy ta'sir ishlash bo'yicha (masalan, oldingi versiyalarda axlat yig'ish jadvalga kirishni butunlay blokirovka qildi, chunki 9.0 versiyasidan boshlab ish VAKUUM tezlashtirilgan), bu erda sozlash uchun biror narsa bor.

Avtovakuumni quyidagi parametr bilan butunlay o'chirib qo'yishingiz mumkin:

avtovakuum = o'chirilgan

Shuningdek, Autovacuum ishlashi uchun track_counts = on parametri talab qilinadi, aks holda u ishlamaydi.

Odatiy bo'lib, ikkala variant ham yoqilgan. Aslida, avtovakuumni butunlay o'chirib bo'lmaydi - hatto autovakuum = o'chirilgan bo'lsa ham, ba'zida (ko'p miqdordagi tranzaktsiyalardan so'ng) avtovakuum boshlanadi.

Izoh: VAKUUM odatda jadval fayli hajmini kamaytirmaydi, faqat qayta foydalanish mumkin bo'lgan bo'sh joylarni belgilaydi. Agar siz ortiqcha joyni jismonan bo'shatish va ishg'ol qilingan disk maydonini minimallashtirishni istasangiz, sizga buyruq kerak bo'ladi VAKUUM TO'LI. Ushbu parametr ishlayotgan jadvalga kirishni bloklaydi va odatda talab qilinmaydi. VACUUM buyrug'idan foydalanish haqida batafsil ma'lumotni hujjatlarda (ingliz tilida) topishingiz mumkin.

Avtovakuum to'liq o'chirilmagan bo'lsa, siz quyidagi parametrlar yordamida uning so'rovni bajarishga ta'sirini sozlashingiz mumkin:

autovacuum_max_workers- parallel ishlaydigan tozalash jarayonlarining maksimal soni.

autovacuum_naptime - avtovakuum ishga tushmaydigan minimal interval. Standart 1 daqiqa. Siz uni oshirishingiz mumkin, keyin ma'lumotlar tez-tez o'zgarib turadigan bo'lsa, tahlil kamroq tez-tez amalga oshiriladi.

autovakuum_vakuum_eshigi, - axlat yig'ish jarayonini boshlash uchun zarur bo'lgan jadvaldagi o'zgartirilgan yoki o'chirilgan yozuvlar soni VAKUUM yoki statistik ma'lumotlarni yig'ish TAHLIL QILING. Standart 50.

autovakuum_vakuum_miqyosi_omil , autovacuum_analyze_scale_factor - qo'shilgan yozuvlardagi jadval kattaligi koeffitsienti autovakuum_vakuum_eshigi Va avtovakuum_tahlil qilish chegarasi mos ravishda. Standart qiymatlar mos ravishda 0,2 (ya'ni, yozuvlar sonining 20%) va 0,1 (10%).

Keling, 10 000 ta yozuvdan iborat jadval bilan misolni ko'rib chiqaylik. Keyin standart sozlamalar bilan 50+10000*0.1=1050 oʻzgartirilgan yoki oʻchirilgan yozuvlardan soʻng statistika yigʻish boshlanadi. TAHLIL QILING, va 2050 yildan keyin o'zgarishlar - axlat yig'ish VAKUUM.

Agar siz pol va scale_factorni oshirsangiz, parvarishlash jarayonlari kamroq ishlaydi, lekin kichik jadvallar sezilarli darajada o'sishi mumkin. Agar ma'lumotlar bazasi birinchi navbatda kichik jadvallardan iborat bo'lsa, disk maydoni iste'molining umumiy o'sishi sezilarli bo'lishi mumkin, shuning uchun siz ushbu qiymatlarni oshirishingiz mumkin, ammo oqilona.

Shunday qilib, autovacuum_naptime intervalini oshirish va pol va scale_factorni biroz oshirish mantiqiy bo'lishi mumkin. Yuklangan ma'lumotlar bazalarida scale_factorni sezilarli darajada oshirish (1 qiymati jadvallarni ikki marta "shishishiga" imkon beradi) va kunlik bajarilishini rejalashtiruvchiga o'rnatish uchun muqobil bo'lishi mumkin. VAKUUM TAHLILI minimal ma'lumotlar bazasi yuklanishi davrida.

default_statistics_target - buyruq tomonidan to'plangan statistika miqdorini belgilaydi TAHLIL QILING. Standart qiymat 100 dir. Kattaroq qiymatlar ANALYZE buyrug'ining bajarilish vaqtini oshiradi, lekin rejalashtiruvchiga yanada samarali so'rov rejalarini yaratishga imkon beradi. 300 ga oshirish bo'yicha tavsiyalar mavjud.

Ishlash nazorat qilinishi mumkin AVTOVAKUUM, uni uzoqroq qilish, lekin tizimda kamroq stress.

vakuum_xarajati_sahifasiga_urildi- shared_buffers-da joylashgan blokni qayta ishlash uchun "jarima" hajmi. Buferga kirishni bloklash zarurati bilan bog'liq. Standart qiymat 1

vacuum_cost_page_miss - diskdagi blokni qayta ishlash uchun "jarima" hajmi. Buferni blokirovka qilish, buferdagi ma'lumotlarni qidirish, diskdan ma'lumotlarni o'qish bilan bog'liq. Standart qiymat 10

vakuum_xarajati_sahifasi iflos- blokni o'zgartirish uchun "jarima" hajmi. O'zgartirilgan ma'lumotlarni diskka qayta o'rnatish zarurati bilan bog'liq. Standart qiymat 20

vakuum_xarajat_chegarasi- "jarimalarning" maksimal miqdori, shundan so'ng yig'ish jarayoni vakuum_xarajati_kechikish muddati davomida "muzlatib qo'yilishi" mumkin. Standart 200

vakuum_xarajati_kechikish- vakuum_xarajati_chegarasiga yetgandan so'ng, axlat yig'ish jarayonini "muzlatish" vaqti. Standart qiymat 0ms

avtovakuum_vakuum_xarajati_kechikish- avtovakuum uchun axlat yig'ish jarayonini "muzlatish" vaqti. Standart 20ms. Agar -1 ga o'rnatilgan bo'lsa, vakuum_xarajati_kechikish qiymati ishlatiladi

avtovakuum_vakuum_xarajat chegarasi- avtovakuum uchun "jarima" ning maksimal hajmi. Standart qiymat -1 - vakuum_cost_limit qiymati ishlatiladi

Hisobot qilingan foydalanish vakuum_xarajati_sahifasi_hit = 6, vakuum_xarajat_chegarasi = 100, autovacuum_vacuum_cost_delay = 200ms AUTOVACUUM ta'sirini 80% gacha kamaytiradi, lekin uni bajarish vaqtini uch barobarga oshiradi.

Diskda yozishni sozlash

Tranzaktsiya tugallangandan so'ng, PostgreSQL avval ma'lumotlarni maxsus tranzaksiya jurnaliga WAL (Write-ahead log), so'ngra jurnal ma'lumotlari diskka yozilishi kafolatlangandan so'ng ma'lumotlar bazasiga yozadi. Standart mexanizm fsync, PostgreSQL ma'lumotlarni (jurnalni) OS disk keshidan diskka majburan o'chirganda va faqat muvaffaqiyatli yozishdan (jurnaldan) keyin mijozga tranzaktsiya muvaffaqiyatli yakunlanganligi haqida xabar beriladi. Tranzaktsiyalar jurnalidan foydalanish tranzaktsiyani yakunlash yoki ma'lumotlarni yozishda xatolik yuz berganda ma'lumotlar bazasini tiklash imkonini beradi.

Katta yozish hajmlari bo'lgan band tizimlarda tranzaktsiyalar jurnalini alohida jismoniy diskka ko'chirish mantiqiy bo'lishi mumkin (lekin bir xil diskning boshqa qismiga emas!). Buning uchun siz ma'lumotlar bazasini to'xtatishingiz, pg_xlog katalogini boshqa joyga ko'chirishingiz va eski joyda, masalan, birlashma yordam dasturidan foydalanib, ramziy havola yaratishingiz kerak. Far Manager (Alt-F6) ham havolalar yaratishi mumkin. Bunday holda, siz yangi joylashuv PostgreSQL (odatda postgres) bilan ishlaydigan foydalanuvchi uchun kirish huquqiga ega ekanligiga ishonch hosil qilishingiz kerak.

Agar ma'lumotlarni o'zgartirish operatsiyalari ko'p bo'lsa, jurnaldan ma'lumotlar bazasiga o'tkazilishini kutish mumkin bo'lgan ma'lumotlar miqdorini nazorat qiluvchi checkpoint_segments qiymatini oshirish kerak bo'lishi mumkin. Standart qiymat - 3. Shuni hisobga olish kerakki, jurnal uchun bo'sh joy ajratilgan bo'lib, formula (checkpoint_segments * 2 + 1) * 16 MB bo'lib, 32 qiymati bilan allaqachon 1 GB dan ortiq diskni talab qiladi. bo'sh joy.

PostgreSQL har bir yozish tranzaktsiyasi tugagandan so'ng ma'lumotlarni OS fayl keshidan diskka tozalaydi. Bir tomondan, bu diskdagi ma'lumotlarning doimo yangilanishini kafolatlaydi, boshqa tomondan, ko'p sonli tranzaktsiyalar bilan ishlash kamayadi. To'liq o'chirib qo'ying fsync belgilash orqali mumkin

fsync=off
full_page_writes = yopiq

Buni faqat uskuna va UPSga 100% ishonsangizgina amalga oshirish mumkin (manba uzluksiz quvvat manbai). Aks holda, tizim ishdan chiqqan taqdirda, yo'q qilingan ma'lumotlar bazasini olish xavfi mavjud. Va har qanday holatda, yozilmagan ma'lumotlar xotirasini quvvatlantirish uchun batareyaga ega RAID kontrolleri ham zarar ko'rmaydi.

Muayyan alternativa parametrdan foydalanish bo'lishi mumkin

synchronous_commit = yopiq

Bunday holda, operatsiyani bajarish uchun muvaffaqiyatli javobdan so'ng, tranzaktsiyani diskka xavfsiz tarzda yozish uchun biroz vaqt ketishi mumkin. To'satdan o'chirilgan taqdirda, ma'lumotlar bazasi yo'q qilinmaydi, ammo so'nggi tranzaksiyalardan olingan ma'lumotlar yo'qolishi mumkin.

Agar siz fsync-ni to'liq o'chirmasangiz, sinxronizatsiya usulini parametrda belgilashingiz mumkin. ITS diskidagi maqola pg_test_fsync yordam dasturiga ishora qiladi, lekin u mening PostgreSQL tuzilmasida topilmadi. 1C ma'lumotlariga ko'ra, ularning holatida Windows-da usul o'zini eng maqbul deb ko'rsatdi open_datasync(Aftidan, bu sukut bo'yicha qo'llaniladigan usul).

Agar ko'plab kichik yozish tranzaktsiyalari ishlatilsa (1C holatida bu tranzaktsiyadan tashqari katalogning ommaviy yangilanishi bo'lishi mumkin), commit_delay (tranzaksiyani yakunlashning kechikish vaqti mikrosekundlarda, standart 0) va commit_siblings (standart 5) parametrlarining kombinatsiyasi. yordam berishi mumkin. Variantlar yoqilganda, tranzaksiyani yakunlash commit_delay bo'lsa, kechiktirilishi mumkin bu daqiqa Kamida commit_siblings tranzaksiyalari bajariladi. Bunday holda, disk yozishni optimallashtirish uchun barcha tugallangan tranzaktsiyalar natijasi birgalikda yoziladi.

Ishlashga ta'sir qiluvchi boshqa parametrlar

wal_buffers- tranzaksiya jurnallarini yuritish uchun shared_buffers-dagi xotira miqdori. Tavsiya: 1-4GB mavjud xotira bilan 256KB-1MB qiymatlardan foydalaning. Hujjatlarda aytilishicha, "-1" qiymatidan foydalanish avtomatik ravishda shared_buffers qiymatiga qarab qiymatni moslashtiradi.

tasodifiy_sahifa_narxi- indekslar yordamida ma'lumotlarni qidirishda foydalaniladigan tasodifiy o'qishning "narxi". Standart 4.0. Birlik - ketma-ket ma'lumotlarga kirish vaqti. Tez disk massivlari, ayniqsa SSD disklari uchun qiymatni pasaytirish mantiqan to'g'ri keladi; bu holda PostgreSQL indekslardan faolroq foydalanadi.

Havoladagi kitobda sozlanishi mumkin bo'lgan boshqa parametrlar mavjud. Muayyan parametrlarni belgilash bo'yicha PostgreSQL hujjatlarini o'qib chiqishingiz ham tavsiya etiladi.

QUERY TUNING bo'limidan parametrlarni o'zgartirish tavsiya etiladi, ayniqsa rejalashtiruvchiga muayyan qidiruv usullaridan foydalanishni taqiqlash bilan bog'liq, faqat siz nima qilayotganingizni to'liq tushunsangiz. Bir turdagi so'rovlarni optimallashtirish va boshqa barcha so'rovlarning ish faoliyatini buzish juda oson. Ushbu bo'limdagi ko'pgina parametrlarni o'zgartirish samaradorligi ma'lumotlar bazasidagi ma'lumotlarga, ushbu ma'lumotlarga bo'lgan so'rovlarga (ya'ni, ishlatiladigan 1C versiyasi va boshqalar) va DBMS versiyasiga bog'liq.

Xulosa

PostgreSQL - bu qobiliyatli qo'llarda kuchli DBMS, lekin u ehtiyotkorlik bilan konfiguratsiyani talab qiladi. U 1C bilan birgalikda ishlatilishi va munosib ishlashga ega bo'lishi mumkin va uning bepul tabiati juda yoqimli bonus bo'ladi.

Ushbu maqolaga tanqid va qo'shimchalar qabul qilinadi.

foydali havolalar

http://postgresql.leopard.in.ua/ - kitob veb-sayti " PostgreSQL konfiguratsiyasi va masshtablash bilan ishlash ", mening fikrimcha, PostgreSQL-ni sozlash va boshqarish uchun eng to'liq va tushunarli qo'llanma

http://etersoft.ru/products/postgre - bu yerda siz Windows uchun PostgreSQL-ning 1C-mos keladigan tuzilishini va Linuxning turli tarqatish va versiyalarini yuklab olishingiz mumkin. ITS-ga obuna bo'lmagan yoki versiyasini talab qiladiganlar uchun Linux versiyasi, bu v8.1c.ru saytida taqdim etilmaydi.

http://www.postgresql.org/docs/9.2/static/ - PostgreSQL bo'yicha rasmiy hujjatlar (ingliz tilida)

PostgreSQL-ni sozlash bo'yicha ITS diskidan maqolalar

Maqolani tahrirlash tarixi

  • 29.01.2015 - dastlabki versiya chop etildi
  • 31.01.2015 - maqola AUTOVACUUM bo'limi bilan to'ldirildi, asl hujjatlarga havola qo'shildi.

Kelajakda ma'lumotlar qo'shish va o'zgartirish rejimida DBMS ishlashini sinab ko'rish niyatidaman.

Biz Postgres Professional kompaniyasidan montajni o'rnatamiz. 1C: Enterprise versiyasi bo'lgan sahifada biz PostgreSQL-ning so'nggi versiyasini CentOS 7 da o'rnatish haqida ma'lumot topamiz.

Keling, omborlarni ulaymiz va PostgreSQL 9.6 ni o'rnatamiz:

Sudo rpm -ivh http://1c.postgrespro.ru/keys/postgrespro-1c-centos96.noarch.rpm sudo yum makecache sudo yum postgresql-pro-1c-9.6 o'rnatish

Asosiy PostgreSQL sozlamalari

Biz xizmat ma'lumotlar bazalarini ruscha lokalizatsiya bilan ishga tushiramiz:

Su postgres /usr/pgsql-9.6/bin/initdb -D /var/lib/pgsql/9.6/data --locale=ru_RU.UTF-8 chiqish xizmati postgresql-9.6 initdb

PostgreSQL xizmatini ishga tushiring va uni ishga tushirishga qo'shing:

Systemctl postgresql-9.6-ni yoqish systemctl postgresql-9.6-ni ishga tushirish systemctl statusi postgresql-9.6

Serverga masofadan ulanish imkoniyatiga ega bo'lish uchun postgres foydalanuvchisi uchun parol o'rnatdik:

Su - postgres psql ALTER USER postgres WITH KKRIPTLANGAN PAROL "yourpassword"; \q chiqish

Mcedit /var/lib/pgsql/9.6/data/pg_hba.conf

ochilgan faylda izohni olib tashlang va satrlarni o'zgartiring:

barcha mezbon 127.0.0.1/32 identifikatori yoqilgan barcha mezbon 127.0.0.1/32 md5

barcha 0.0.0.0/0 identifikatorlarini mezbonlik qilish yoqilgan barcha mezbon 0.0.0.0/0 md5

1C: Enterprise uchun PostgreSQL sozlamalarini (postgresql.conf) optimallashtirish

Bu erda ESXi 6.5 virtual mashinasida ishlaydigan PostgreSQL sozlamalari bo'ladi.

VM uchun ajratilgan resurslar:

protsessor - 8 vCPU;

xotira - 48 GB;

OS uchun disk - SAS HDD dan RAID1 LUN apparatida 50 GB;

ma'lumotlar bazasi uchun disk - SSD-dan RAID1 dasturida 170 GB

jurnallar uchun disk - SSD-dan RAID1 dasturida 100 GB

Sozlamalarni tahrirlash uchun buyruqni bajaring:

Mcedit /var/lib/pgsql/9.6/data/postgresql.conf

Biz o'zgartiradigan sharhlangan parametrlar faollashtirilishi kerak.

Markaziy protsessor

autovacuum_max_workers = 4

autovacuum_max_workers = NCores/4..2, lekin kamida 4

Avtovakuum jarayonlari soni. Umumiy qoida shundaki, yozish talablari qancha ko'p bo'lsa, shuncha ko'p jarayon. Faqat o'qish uchun mo'ljallangan ma'lumotlar bazasida bitta jarayon etarli.

ssl=off

Shifrlashni o'chiring. Xavfsiz ma'lumotlar markazlari uchun shifrlash ma'nosiz, lekin protsessor yukining oshishiga olib keladi

Xotira

shared_buffers = 12 GB

shared_buffers = RAM/4

Umumiy sahifa keshi uchun PgSQL tomonidan ajratilgan xotira miqdori. Ushbu xotira barcha PgSQL jarayonlari orasida taqsimlanadi. Operatsion tizim U ma'lumotlarni o'zi keshlaydi, shuning uchun kesh uchun barcha mavjud RAMni ajratishning hojati yo'q.

temp_buferlar = 256MB

Vaqtinchalik jadvallar uchun maksimal sahifalar soni. Bular. bu har bir seansda vaqtinchalik jadvallar hajmining yuqori chegarasi.

work_mem = 64MB

work_mem = RAM/32..64 yoki 32MB..128MB

Bitta so'rovni qayta ishlash uchun xotira chegarasi. Ushbu xotira har bir seans uchun individualdir. Nazariy jihatdan, maksimal talab qilinadigan xotira max_connections * work_mem ga teng, amalda bu sodir bo'lmaydi, chunki ko'pchilik seanslar deyarli doimo kutmoqda. Ushbu maslahat qiymati optimallashtiruvchi tomonidan qo'llaniladi: u so'rov uchun kerakli xotira hajmini taxmin qilishga harakat qiladi va agar bu qiymat work_mem dan katta bo'lsa, u bajaruvchiga darhol vaqtinchalik jadval yaratishni aytadi. work_mem to'liq ma'noda chegara emas: optimallashtiruvchi o'tkazib yuborishi mumkin va so'rov ko'proq xotirani egallaydi, ehtimol bir necha marta. Bu qiymat yaratilgan vaqtinchalik fayllar sonini kuzatish orqali kamaytirilishi mumkin:

care_work_mem = 2 GB

care_work_mem = RAM/16..32 yoki ishchi_mem * 4 yoki 256MB..4GB

Statistik ma'lumotlarni yig'ish (tahlil qilish), axlat yig'ish (VAKUUM), indekslarni yaratish (CREATE INDEX) va xorijiy kalitlarni qo'shish kabi texnik vazifalar uchun xotira chegarasi. Ushbu operatsiyalar uchun ajratilgan xotira hajmi taqqoslanadigan bo'lishi kerak jismoniy o'lcham diskdagi eng katta indeks.

samarali_kesh_hajmi = 36 GB

samarali_kesh_size = RAM - umumiy_buferlar

Fayl tizimining kesh hajmini taxmin qilish. Parametrni oshirish tizimning IndexScan rejalarini tanlashga moyilligini oshiradi. Va u yaxshi.

Disklar

samarali_io_concurrency = 5

Bir vaqtning o'zida xizmat ko'rsatishi mumkin bo'lgan disk tizimiga bir vaqtning o'zida so'rovlar hisobi. Bitta disk uchun = 1, RAID uchun - 2 yoki undan ko'p.

tasodifiy_sahifa_narxi = 1.3

random_page_cost = RAID uchun 1,5-2,0, SSD uchun 1,1-1,3

Tasodifiy sahifani o'qish narxi (standart 4). Disk tizimining qidirish vaqti qanchalik kichik bo'lsa, bu parametr shunchalik kichik bo'lishi kerak (lekin > 1,0). Haddan tashqari katta parametr qiymati PgSQL-ning butun jadvalni skanerlaydigan rejalarni tanlash tendentsiyasini oshiradi (PgSQL indeksni tasodifiy o'qishdan ko'ra butun jadvalni ketma-ket o'qish arzonroq deb hisoblaydi). Va bu yomon.

avtovakuum = yoqilgan

Avtovakuumni yoqish.

autovacuum_naptime = 20s

Avtovakuum jarayonining uyqu vaqti. Agar qiymat juda katta bo'lsa, jadvallar vakuumga vaqt topa olmaydi va natijada jadvallar va indekslarning shishishi va hajmi ortadi. Kichik qiymat keraksiz isitishga olib keladi.

bgwriter_delay = 20ms

Fon yozish jarayonining diskdagi yozish davrlari orasidagi uyqu vaqti. Bu jarayon shared_buffers-da joylashgan sahifalarni disk bilan sinxronlashtirish uchun javobgardir. Ushbu parametr uchun juda katta qiymat nazorat punkti jarayoni va seanslarga (backend) xizmat ko'rsatadigan jarayonlarga yukni oshiradi. Kichik qiymat yadrolardan birining to'liq yuklanishiga olib keladi.

bgwriter_lru_multiplier = 4.0

bgwriter_lru_maxpages = 400

Fonda yozib olish jarayonining yozish intensivligini nazorat qiluvchi variantlar. Bitta siklda bgwriter oxirgi siklda yozilganidan ko'pi bgwriter_lru_multiplierga ko'paytiriladi, lekin bgwriter_lru_maxpages dan ortiq yozmaydi.

synchronous_commit = yopiq

Qabul qilish vaqtida disk sinxronizatsiyasini o'chirib qo'ying. Oxirgi bir necha tranzaktsiyalarni yo'qotish xavfini yaratadi (0,5-1 soniya ichida), lekin ma'lumotlar bazasining yaxlitligini kafolatlaydi; majburiyat zanjirida bo'shliqlar yo'q. Ammo bu hosildorlikni sezilarli darajada oshiradi.

wal_keep_segments = 256

wal_keep_segments = 32..256

Tekshirish punktlari orasidagi WAL segmentlarining maksimal soni. Juda tez-tez tekshiruv nuqtalari disk quyi tizimida sezilarli yozish yukiga olib keladi. Har bir segment 16 MB hajmga ega

wal_buffers = 16 MB

Hali diskka yozilmagan WAL ma'lumotlarini buferlash uchun ishlatiladigan umumiy xotira miqdori. Standart qiymati -1 ning 1/32 (taxminan 3%) ga teng, lekin kamida 64 KB va bitta WAL segmenti (odatda 16 MB) hajmidan ko'p bo'lmagan hajmni bildiradi. Agar avtomatik tanlangan juda kichik yoki katta bo'lsa, bu qiymat qo'lda o'rnatilishi mumkin, lekin 32 KB dan kam bo'lgan har qanday ijobiy raqam 32 KB sifatida qabul qilinadi. Ushbu parametr faqat server ishga tushganda o'rnatilishi mumkin.

Har bir tranzaksiya amalga oshirilganda WAL buferlarining mazmuni diskka yoziladi, shuning uchun juda katta qiymatlar katta foyda keltirishi dargumon. Biroq, kamida bir necha megabayt qiymati ko'p mijozlar bir vaqtning o'zida tranzaktsiyalarni amalga oshirayotganda band serverda yozish samaradorligini oshirishi mumkin. Standart qiymatda (-1) ishlaydigan avtomatik sozlash ko'p hollarda maqbul qiymatlarni tanlaydi.

default_statistics_target = 1000

ALTER TABLE SET STATISTICS individual chegaralarni belgilamagan ustunlar uchun qo‘llaniladigan standart statistik maqsad chegarasini o‘rnatadi. Belgilangan qiymat qanchalik baland bo'lsa, ANALYZE ni ishga tushirish shunchalik uzoq davom etadi, lekin rejalashtiruvchining baholash sifati shunchalik yuqori bo'lishi mumkin. Ushbu parametr uchun standart qiymat 100 dir.

checkpoint_completion_target = 0,9

Tekshirish punktining "qoralash" darajasi. Tekshirish punkti vaqtida ro'yxatga olish tezligi shunday o'rnatiladiki, nazorat nuqtasi vaqti o'tgan vaqtdan beri o'tgan vaqtga teng bo'lib, nazorat nuqtasini_to'ldirish_ maqsadiga ko'paytiriladi.

min_wal_size = 4G
max_wal_size = 8G

min_wal_size = 512MB .. 4G
max_wal_size = 2 * min_wal_size

WAL fayllarining minimal va maksimal hajmi. Checkpoint_segments bilan o'xshash

fsync=yoqilgan

Variantni o'chirib qo'yish ishlashning oshishiga olib keladi, lekin elektr to'satdan o'chirilgan bo'lsa, barcha ma'lumotlarni yo'qotish xavfi katta. Diqqat: agar RAID keshga ega bo'lsa va qayta yozish rejimida bo'lsa, RAID kontroller kesh batareyasining mavjudligi va ishlashini tekshiring! Aks holda, quvvat o'chirilganda RAID keshiga yozilgan ma'lumotlar yo'qolishi mumkin va buning natijasida PgSQL ma'lumotlar yaxlitligini kafolatlamaydi.

row_security = o'chirilgan

Yozuv darajasining ruxsatini boshqarishni o'chirish

enable_nestloop = yopiq

Reja tuzuvchining o'rnatilgan tsiklga ulanish rejalaridan foydalanishini yoqadi yoki o'chiradi. Ichki halqalarni butunlay yo'q qilishning iloji yo'q, lekin agar siz ushbu parametrni o'chirib qo'ysangiz, rejalashtiruvchi foydalanmaydi bu usul, agar boshqalar qo'llanilishi mumkin bo'lsa. Odatiy bo'lib, bu sozlama yoqilgan.

Qulflar

har bir tranzaksiya uchun maksimal_locks = 256

Bitta tranzaksiyada indeks/jadval blokirovkalarining maksimal soni

1C platformasi uchun sozlamalar

standard_conforming_strings = yopiq

Qochish uchun \ belgisidan foydalanishga ruxsat bering

escape_string_warning = yopiq

Qochish uchun \ belgisidan foydalanish haqida ogohlantirmang

Xavfsizlik sozlamalari

Keling, PostgreSQL serveri faqat bitta mashinada o'rnatilgan 1C: Enterprise serveriga ko'rinadiganligiga ishonch hosil qilaylik.

listen_addresses = 'localhost'

Agar 1C: Enterprise serveri boshqa mashinaga o'rnatilgan bo'lsa yoki PGAdmin qo'shimchasi yordamida DBMS serveriga ulanish zarurati tug'ilsa, buning o'rniga localhost siz ushbu mashinaning manzilini ko'rsatishingiz kerak.

Ma'lumotlar bazasini saqlash

PostgreSQL, deyarli har qanday ma'lumotlar bazasi kabi, disk quyi tizimi uchun juda muhim, shuning uchun biz ma'lumotlar bazasini yaxshilash uchun PostgreSQL tizimini, jurnallarni va ma'lumotlar bazalarini turli disklarga joylashtiramiz.

Serverni to'xtatish

Systemctl to'xtatish postgresql-9.6

Biz jurnallarni 120 Gb SSD ga o'tkazamiz:

Mv /var/lib/pgsql/9.6/data/pg_xlog /raid120 mv /var/lib/pgsql/9.6/data/pg_clog /raid120 mv /var/lib/pgsql/9.6/data/pg_log /raid120

Ln -s /raid120/pg_xlog /var/lib/pgsql/9.6/data/pg_xlog ln -s /raid120/pg_clog /var/lib/pgsql/9.6/data/pg_clog ln -s /raid120/pg_log /var/ pgsql/9.6/data/pg_log

Shuningdek, biz katalogni ma'lumotlar bazalari bilan o'tkazamiz:

Mv /var/lib/pgsql/9.6/data/base /raid200

Ln -s /raid200/base /var/lib/pgsql/9.6/data/base

Serverni ishga tushiramiz va uning holatini tekshiramiz

Systemctl start postgresql-9.6 systemctl status postgresql-9.6

Case PostgreSQL ma'lumotlar bazasi serveri sifatida foydalaning windows platformasi unchalik mashhur emas, lekin bu odatda MS mahsulotlariga qandaydir tarzda pul tejash kerak bo'lganda paydo bo'ladi. PostgreSQL bilan eng yaxshi ishlaydigan maxsus ilovalar ham mavjud. 1c uchun PostgreSQL-ning o'zgartirilgan tuzilishi mavjud bo'lib, ishlab chiquvchilarning ta'kidlashicha, MSSQL bilan taqqoslanadigan ishlash darajasi va xatolarga chidamlilik beradi. Bu haqiqatan ham shundaymi, keling buni amalda tekshirib ko'ramiz :)

1. PostgreSQL-ni o'rnating

1c veb-saytidan PostgreSQL 64-bit 9.1.2-1.1C-ning so'nggi versiyasini yuklab oling, arxivni oching, msi paketini ishga tushiring, intsiz fayl katta hajmga ega emas.

Start tugmasini bosing.
O'rnatish opsiyalarini sukut bo'yicha qoldiring.

Foydalanuvchi uchun parol o'rnating postgres undan xizmat boshlanadi . Keyingiga bosing. Agar siz PostgreSQL-ni birinchi marta o'rnatayotgan bo'lsangiz, sehrgar sizga foydalanuvchi yaratishingizni taklif qiladi. postgres.

Ma'lumotlar bazasini ishga tushirish bosqichida UTF8 kodlashni tanlang. Ichki postgres foydalanuvchisi uchun login va parolni o'rnating. Diqqat! PostgreSQL xizmati foydalanuvchi parollari va ichki PostgreSQL maʼlumotlar bazasi foydalanuvchi paroli bir xil boʻlmasligi kerak. Parol kamida to'rtta belgidan iborat bo'lishi kerak. Agar siz 1C serverini va PostgreSQL-ni turli xil mashinalarda ishga tushirishni rejalashtirmoqchi bo'lsangiz, "Faqat localhost emas, balki har qanday IP-dan ulanishlarni qo'llab-quvvatlash" katagiga belgi qo'yishingiz kerak. Keyingi va Keyingiga yana bosing. :)

Keyingi ikki marta bosing va o'rnatish tugashini kuting.

Keyin Start\All Programs\PostgreSQL 9.1.2-1.1C(x64) ga o'ting. pgAdmin III boshqaruv yordam dasturini ishga tushiring. Keling, ma'lumotlar bazasiga ulanishga harakat qilaylik. O'rnatish paytida ko'rsatilgan parolni kiriting.
Va biz quyidagi xatoni olamiz: Serverga ulanishda xatolik: FATAL: "postgres" foydalanuvchisi uchun parolni autentifikatsiya qilish muvaffaqiyatsiz tugadi.

Parol to'g'ri kiritilganligini hisobga olsak, juda kutilmagan. Men pg_hba.conf bilan ishlashga qaror qildim, lekin bir qarashda u erda hamma narsa yaxshi.

# TYPE MA'LUMOTLAR BAZASI FOYDALANUVCHI MANZIL USULI # IPv4 mahalliy ulanishlari: barcha postgres hosting::1/128 md5 host all postgres 127.0.0.1/32 md5 host all postgres 192.168.1.0/24 md5

Men avtorizatsiya usulini md5 dan ishonchga o'zgartirishga qaror qildim. Men xizmatni qayta ishga tushiraman va yana ma'lumotlar bazasiga ulanishga harakat qilaman. Bu safar men ushbu xabarni olaman.
Haqiqatan ham, pgAdmin veb-saytida bir nechtasi mavjud yangi versiya. Shundan so'ng ma'lumotlar bazasiga ulanish muvaffaqiyatli bo'ladi!!!?!!! Esimda, ilgari md5 bunday muammolarni keltirib chiqarmagan, aftidan, bu nosozlik haqiqatan ham bog'liq eski versiya pgAdmin.
Endi biz 1C ehtiyojlari uchun ma'lumotlar bazasini yaratishimiz yoki uni 1C-ning o'zi yordamida qilishimiz mumkin :)

2. O'rnatish 1C korxonasi 8.2.

O'rnatish uchun biz quyidagi komponentlarga e'tibor beramiz: 1C: Enterprise, 1C: Enterprise Server, veb-server kengaytmasi modullari, 1C: Enterprise server ma'muriyati.
"1C Enterprise-ni xizmat sifatida o'rnatish" o'rnatish bosqichida biz USR1C82 foydalanuvchisi uchun parolni o'rnatdik.
Keyingi tugmasini bosing va o'rnatish jarayonini kuzatib boring :) Foydalanuvchiga USR1CV82 O'rnatish vaqtida quyidagi huquqlar berilishi kerak:

Xizmat sifatida tizimga kiring (Xizmat sifatida tizimga kiring), Ommaviy ish sifatida tizimga kiring (Ommaviy ish sifatida tizimga kiring). Bu yerda koʻrishingiz mumkin Mahalliy kompyuter siyosati\Kompyuter konfiguratsiyasi\Windows sozlamalari\Xavfsizlik sozlamalari\Mahalliy siyosatlar\foydalanuvchi huquqini belgilash.

Keling, uskunaga o'taylik 1C Enterprise serverlarini boshqarish, Biz klaster ko'tarilganini va 1541 portga osilganligini ko'ramiz. Bizning serverimiz "Ishchi serverlar" yorlig'ida ham mavjud. Endi siz ma'lumotlar bazasini 1C serveriga qo'shishingiz mumkin. Buni amalga oshirish uchun yorlig'iga o'ting " Axborot asoslari"Sichqonchaning o'ng tugmachasini bosing va tanlang Yangi - Axborot bazasi. PostgreSQL serveriga ulanish uchun kerakli parametrlarni o'rnating. OK tugmasini bosing. 1C: Enterprise-ni ishga tushiramiz. Biz serverga mavjud ma'lumotlar bazasini qo'shishni tanlaymiz.
Keyin ulanish parametrlarini o'rnating. "Keyingi" va nihoyat "Finish" tugmasini bosing.
Ma'lumotlar bazasini yaratish operatsiyasi to'g'ridan-to'g'ri 1C: Enterprise-dan amalga oshirilishi mumkin. Buning uchun ishga tushirishda “Yangisini yarating axborot bazasi».

1C mijozlarini serverga tashqaridan ulash va xavfsizlik devorida ma'lumotlar bazasi serverini boshqarish uchun quyidagi portlar ochiq bo'lishi kerak:

Server agenti ( ragent) - tcp: 1540 Klaster bosh menejeri ( rmngr) - tcp:1541 Ishchi jarayonlarini dinamik taqsimlash uchun tarmoq portlari diapazoni - tcp:1560-1591, tcp:5432 - Postgresql. Keling, standart interfeys orqali yoki buyruq yordamida qoida yarataylik:

netsh advfirewall xavfsizlik devori qoidani qo'shish nomi = "1Cv8-Server" dir=in action=allow protocol=TCP localport=1540,1541,5432,1560-1590 enable=ha profile=ANY remoteip=HARQIY interfeys turi=LAN

Endi biz 1C: Enterprise mijozini boshqa kompyuterdan osongina ishga tushirishimiz va mavjud ma'lumotlar bazasini qo'shishimiz mumkin newdb. Litsenziyalar va dasturiy ta'minot/apparat himoyasi haqida unutmang. Endi biz Gilev testini yuklab olishimiz va tizimimizning ishlashini o'lchashimiz mumkin.

1 Gb xotiraga ega VirtualBox-da, Dual-Core 2,6 GHz, 319-reliz 1c, Gilev testi CentOS-dagi kabi 11,42 ball beradi. 16.362 da 11.60 dan bir oz ko'proq ball mavjud. EnterpriseDB Tuning Wizard yordamida sozlamalarni optimallashtirish sezilarli o'sishni ta'minlamadi (11.66 va 11.62), garchi bu umuman foydali bo'lishi mumkin. :)

3. PostgreSQL serverida muntazam ish.

Zaxira.

pgAdmin III boshqaruv yordam dasturini ishga tushiring va kerakli ma'lumotlar bazasini o'ng tugmasini bosing. "Zaxiralash" ni tanlang.
Formatni tanlang (Maxsus (0 dan 9 gacha siqish darajasi), Tar, Oddiy, Katalog). Siqish darajasi bo'yicha, har qanday siqish darajasining "maxsus formati" eng yaxshi siqiladi, keyin "katalog", keyin "oddiy" va nihoyat "tar". Biz UTF8 kodlashni belgilaymiz, rol nomi postgresql. Biz barcha qo'shimcha variantlarni sukut bo'yicha qoldiramiz. "Zaxiralash" tugmasini bosing. "Xabarlar" maydonida bajarish kodi bilan barcha bajarilgan operatsiyalar ro'yxati ko'rsatiladi. Agar 0 bo'lsa, muvaffaqiyat. Bu erda siz shunga o'xshash operatsiyani buyruq satridan qanday bajarishni ham ko'rishingiz mumkin.

F)\pgAdmin III\1.16\pg_dump.exe" --xost 192.168.1.200 --port 5432 --foydalanuvchi nomi "postgres" --rol "postgres" --parol yo'q --format moslashtirilgan --blobs --siqishni 9 --kodlash UTF8 --verbose --fayl "G:\Backups\gilev_dump.backup" "newdb"

Shunga ko'ra, avtomatik skript Zaxira nusxasi, biz rejalashtiruvchiga qo'shamiz quyidagicha ko'rinishi mumkin:

"C:\Program Files (x86)\pgAdmin III\1.16\pg_dump.exe" --host 192.168.1.200 --port 5432 --foydalanuvchi nomi "postgres" --rol "postgres" --parol yo'q --format moslashtirilgan --blobs --compress 9 --encoding UTF8 --verbose --fayl "G:\Backups\gilev_dump_%date:~0,2%_%date:~3,2%_%date:~6,4% .backup" "newdb"

Qayta tiklash.

Qayta tiklash uchun biz ma'lumotlarni qayta tiklamoqchi bo'lgan ma'lumotlar bazasini tanlang zaxira nusxasi, yaxshisi bo'sh. Sichqonchaning o'ng tugmachasini bosing va "Qayta tiklash" -ni tanlang. Zaxira faylini, rol nomini o'rnating: postgres, "Restore" tugmasini bosing
Buyruqlar qatoridan foydalanish:

"C:\Program Files (x86)\pgAdmin III\1.16\pg_restore.exe" --host 192.168.1.200 --port 5432 --username "postgres" --dbname "testdb" --role "postgres" --yo'q -parol --batafsil "G:\Backups\gilev_dump_26_09_2012.backup"

bu erda testdb - zaxira arxivi tiklanadigan bo'sh ma'lumotlar bazasi.

Ta'mirlash operatsiyalari:

VAKUUM buyrug'i:

Hozirda ulangan ma'lumotlar bazasining barcha jadvallarini ketma-ket tozalaydi, vaqtinchalik ma'lumotlarni o'chiradi va diskda bo'sh joyni bo'shatadi. Ko'pincha VACUUM buyrug'i diskdagi maksimal bo'sh disk maydonini olish va ma'lumotlarga kirish tezligini oshirish uchun aniq bajariladi.

VAKUUM— yozuvlarning eski versiyalari egallagan joyni bepul deb belgilaydi. Buyruqning ushbu variantidan foydalanish, qoida tariqasida, jadvalni o'z ichiga olgan fayl hajmini kamaytirmaydi, lekin uni nazoratsiz o'sishiga yo'l qo'ymaslik imkonini beradi, uni qandaydir maqbul darajada mahkamlaydi. VAKUUMni ishga tushirganda, ishlov berilayotgan jadvalga parallel ravishda kirish mumkin. Bir nechta bor qo'shimcha imkoniyatlar VAKUUM dan foydalanish: VAKUUM TO'LIQ, VAKUUM MUZLASH, VAKUUM TAHLIL.

VAKUUM TO'LI yozuvlarning barcha eski versiyalarini olib tashlashga va shunga mos ravishda jadvalni o'z ichiga olgan fayl hajmini kamaytirishga harakat qiladi. Ushbu buyruq opsiyasi ishlov berilayotgan jadvalni to'liq bloklaydi.

VAKUUM MUZLATISH - Agar VACUUM FULL jadvallardan “axlatni” olib tashlasa va yozuvlarni jadvallar diskda ixcham joylashishi va eng kichik bo'laklardan iborat bo'lishi uchun harakatlantirsa, siqish esa uzoq vaqt talab qilsa va yozuvlarni bloklasa, VACUUM FREEZE shunchaki “axlatni” olib tashlaydi. jadvallar, lekin yozuvlarning o'zi harakat qilmaydi, shuning uchun u tezroq va yozishni bloklamaydi. Hozirgi vaqtda ushbu parametr avtovakuum bilan almashtirildi - axlatni avtomatik yig'ish postgresql.conf Bundan tashqari, funksionallikni kengaytiruvchi bir nechta qo'shimcha imkoniyatlar:

avtovakuum = yoqilgan# Avtomatik axlat yig'ishni yoqadi.
log_autovacuum_min_duration = -1# Uni nolga o'rnatish barcha avtovakuum harakatlarini qayd qiladi. Minus bir (sukut bo'yicha) jurnalga chiqishni taqiqlaydi. Misol uchun, agar siz qiymatni o'rnatsangiz
250 ms ga teng bo'lsa, 250 ms yoki undan ko'proq vaqt davomida ishlaydigan barcha avtovakuum va tahlil harakatlari qayd qilinadi. Ushbu sozlamani yoqish avtovakuumni kuzatish uchun foydali bo'lishi mumkin.
Ushbu parametr faqat postgresql.conf faylida yoki ichida o'rnatilishi mumkin buyruq qatori server.
autovacuum_naptime = 10 min# Ma'lumotlar bazasida axlat yig'ish zarurati tekshirilgandan so'ng soniyalarda vaqt. Odatiy bo'lib, bu daqiqada bir marta sodir bo'ladi.
autovakuum_vakuum_eshigi= 1800 # Har qanday jadvaldagi o'chirilgan va o'zgartirilgan yozuvlar sonining chegarasi, undan oshganda axlat yig'ish sodir bo'ladi (VACUUM).
avtovakuum_tahlil qilish chegarasi= 900 # Har qanday jadvalga kiritilgan, o'chirilgan va o'zgartirilgan yozuvlar soni uchun chegara, undan oshib ketgandan so'ng tahlil jarayoni boshlanadi (tahlil qilish).
autovakuum_vakuum_miqyosi_omil= 0.2 # Jadvalga nisbatan o'zgartirilgan va o'chirilgan yozuvlar ulushi, undan yuqorida axlat yig'ish boshlanadi.
autovacuum_analyze_scale_factor= 0.1 # Oldingi o'zgaruvchi bilan bir xil, ammo tahlilga nisbatan.
VAKUUM TAHLILI— Agar maʼlumotlar bazasida maʼlumotlar oʻzgartirilmagan yoki oʻchirilmagan, faqat qoʻshiladigan jadvallar mavjud boʻlsa, unda bunday jadvallar uchun alohida ANALYZE buyrugʻidan foydalanish mumkin. Ko'p sonli yozuvlarni qo'shgandan so'ng, ushbu buyruqni alohida jadval uchun ishlatishga arziydi.

ANALYZE buyrug'i:

Jadvaldagi ma'lumotlarni taqsimlash haqidagi ma'lumotlarni yangilash uchun xizmat qiladi. Ushbu ma'lumot optimallashtiruvchi tomonidan eng tez so'rovlarni bajarish rejasini tanlash uchun ishlatiladi. Odatda buyruq bilan birgalikda ishlatiladi VAKUUM TAHLILI.

REINDEX buyrug'i (qayta indekslash):

Mavjud indekslarni qayta tiklash uchun foydalaniladi. Bunday holatda foydalanish mantiqan to'g'ri keladi

— indeksning shikastlanishi;

- uning hajmining doimiy o'sishi.

Ikkinchi holat ba'zi tushuntirishlarni talab qiladi. Indeks, xuddi jadval kabi, yozuvlarning eski versiyalari bo'lgan bloklarni o'z ichiga oladi. PostgreSQL har doim ham ushbu bloklarni qayta ishlata olmaydi va shuning uchun indeks fayli asta-sekin o'sib boradi. Agar jadvaldagi ma'lumotlar tez-tez o'zgarib tursa, u juda tez o'sishi mumkin. Agar siz indeksning bunday harakatini sezsangiz, uni vaqti-vaqti bilan REINDEX buyrug'ini ishga tushirish uchun sozlashingiz kerak. Iltimos, diqqat qiling: VACUUM FULL kabi REINDEX buyrug'i jadvalni to'liq qulflaydi, shuning uchun u server yuki minimal bo'lganda bajarilishi kerak.

Qaysi DBMS - Postgresql yoki MS SQL for 1C eng maqbul degan savol ko'plab maqolalar mavzusi bo'lgan. Ushbu maqolada biz ikkalasi uchun optimallashtirish bosqichlarini ko'rib chiqamiz. Har bir ishlab chiqaruvchining ma'lumotlar bazasida o'z konfiguratsiya tavsiyalari va 1C tavsiyalari mavjud. Shuni ta'kidlash kerakki, uskunaga, server konfiguratsiyasiga va turli xil yuklarni o'rnatadigan foydalanuvchilar soniga qarab, 1C uchun ma'lumotlar bazasini optimallashtirish va tavsiyalarni amalga oshirish jarayonining tafsilotlari o'zgarishi mumkin.

1C uchun PostgreSQL-ni sozlash

PostgreSQL-da 1C ma'lumotlar bazalarini ishlatish tajribasi shuni ko'rsatdiki, 1C va PostgreSQLning eng yuqori ishlashi va optimal ishlashi Linuxda erishilgan, shuning uchun undan foydalanish tavsiya etiladi. Ammo operatsion tizimdan qat'i nazar, PostgreSQL-ni o'rnatishda ko'rsatilgan standart sozlamalar faqat ma'lumotlar bazasi serverini ishga tushirish uchun mo'ljallanganligini yodda tutish kerak. Hech qanday sanoat ekspluatatsiyasi haqida gap bo'lishi mumkin emas! Ishga tushirishdan keyingi qadam PostgreSQL-ni 1C uchun optimallashtirish bo'ladi:

  • Birinchidan, biz energiya tejashni o'chirib qo'yamiz (aks holda ma'lumotlar bazasidan javoblardagi kechikishlar oldindan aytib bo'lmaydigan darajada oshishi mumkin) va umumiy xotirani almashtirishni taqiqlaymiz.
  • Biz DBMS serverining asosiy parametrlarini sozlaymiz (konfiguratsiya bo'yicha tavsiyalar ham sotuvchining rasmiy veb-saytida, ham 1C tomonidan etarlicha batafsil tavsiflangan, shuning uchun biz faqat eng muhimlariga e'tibor qaratamiz).
  • 1C kompaniyasining standart tavsiyalari HyperThreading mexanizmlarini o'chirishni taklif qiladi. Ammo Postgres-pro-ni SMT (bir vaqtning o'zida multi-threading) yoqilgan serverlarda sinovdan o'tkazish turli natijalarni ko'rsatdi.
Shared_buffers-ni RAM/4 ga o'rnatish odatiy tavsiyadir, ammo Sql Server misolida ko'rsatilgandek, unga qancha xotira ajratilsa, uning ishlashi shunchalik yaxshi bo'ladi (sahifani tozalash o'chirilgan). Ya'ni, operativ xotirada qancha ko'p ma'lumotlar sahifalari joylashgan bo'lsa, diskka kirish kamroq bo'ladi. Savol tug'iladi: nima uchun bunday kichik kesh? Javob oddiy: agar shared_buffers katta bo'lsa, foydalanilmagan sahifalarning bir qismi diskka almashtiriladi. Ammo asl holatini tiklash to'xtagan va parametr indikatori maqbul bo'lgan momentni qanday kuzatish mumkin? Optimal share_buffers indikatoriga erishish va unga erishish uchun uning qiymati har kuni ishlab chiqarishda (agar iloji bo'lsa) ma'lum bir o'sish bilan ko'tarilishi kerak va qaysi vaqtda sahifalar diskka o'tila boshlaydi (almashtirish kuchayadi).
  • Bundan tashqari, "katta parametr" sukut bo'yicha 8Kb hajmga ega bo'lgan ko'plab kichik sahifalar bilan ishlashga salbiy ta'sir qiladi. Ular bilan ishlash qo'shimcha xarajatlarni oshiradi. 1C uchun optimallashtirish uchun bu bilan nima qilish mumkin? PostgreSQL 9.4 ulkan_pages parametrini taqdim etdi, uni yoqish mumkin, lekin faqat Linuxda. Odatiy bo'lib, katta sahifalar standart o'lchami 2048 kB bilan kiritilgan. Bundan tashqari, ushbu sahifalarni qo'llab-quvvatlash OSda yoqilgan bo'lishi kerak. Shunday qilib, saqlash strukturasini optimallashtirish orqali siz kattaroq shared_buffers indikatoriga erishishingiz mumkin.
  • work_mem = RAM/32..64 yoki 32MB..128MB Har bir seans uchun vaqtinchalik fayllarni ishlatishdan oldin ichki tartiblash, birlashtirish va hokazo operatsiyalar uchun foydalaniladigan xotira hajmini belgilaydi. Agar bu hajm oshib ketgan bo'lsa, server diskdagi vaqtinchalik fayllardan foydalanadi, bu so'rovlarni qayta ishlash tezligini sezilarli darajada kamaytiradi. Ushbu parametr operatorlarni bajarishda ishlatiladi: ORDER BY, DISTINCT, birlashmalarni birlashtirish va boshqalar.
  • Qo'shimcha hisoblang bu parametr quyidagicha amalga oshirilishi mumkin: (Shared memory shared_buffers - boshqa dasturlar uchun xotira) / faol ulanishlar soni. Bu qiymat yaratilgan vaqtinchalik fayllar sonini kuzatish orqali kamaytirilishi mumkin. Vaqtinchalik fayllar hajmi va soni bo'yicha bunday statistik ma'lumotlarni pg_stat_database tizimi ko'rinishidan olish mumkin.
  • effektiv_cache_size = RAM - shared_buffers Ushbu parametrning asosiy maqsadi so'rovni optimallashtiruvchiga ma'lumotlarni olishning qaysi usulini tanlashni aytishdir: to'liq skanerlash yoki indeksli skanerlash. Parametr qiymati qanchalik baland bo'lsa, indeksni skanerlashdan foydalanish ehtimoli shunchalik yuqori bo'ladi. Bunday holda, server so'rovni bajarishda ma'lumotlar xotirada qolishi mumkinligini hisobga olmaydi va keyingi so'rovda uni diskdan olish kerak emas.
  • PostgreSQL o'rnatilmoqda

    Windows ostida PostgreSQL-da 1C-ni o'rnatish juda oddiy jarayon. O'rnatish paketini ishga tushirishda siz UTF-8 kodlashni belgilashingiz kerak. Aslida, bu yagona qiziqarli nuance va Windows-dan 1C 8.3 uchun PostgreSQL-ning boshqa konfiguratsiyasi talab qilinmaydi. Linux operatsion tizimida 1C uchun PostgreSQL-ni o'rnatish va sozlash bir qator qiyinchiliklarga olib kelishi mumkin. Ularni yengish uchun, misol tariqasida, Ubuntu 16.04 x64 serverida PostgreSQL-ni ishga tushirishni (etakchi rus sotuvchisi PostgreSQL-Pro va 1C kompaniyasining tarqatish to'plamlari yordamida) ko'rib chiqaylik.

    PostgreSQL DBMS uchun 1C tarqatish to'plamlarini o'rnatish

    1.PostgreSQL DBMS tarqatish to'plamining belgilangan pozitsiyasini yuklab oling:

    2. PostgreSQL ni serverga yuklash;

    3.Siz PostgreSQL DBMS o'rnatuvchisini quyidagi buyruq bilan ochishingiz mumkin:

    tar -xvf postgresql-9.4.2-1.1C_amd64_deb.tar.bz2

    4.PostgreSQL DBMS tarqatish to'plamini o'rnatishdan oldin tizimda kerakli mahalliy til mavjudligini tekshiramiz (sukut bo'yicha ru_RU.UTF-8):


    5.Agar PostgreSQL ishlaydigan tizim rus tilidan boshqa tilda o'rnatilgan bo'lsa, siz yangi tillarni yaratishingiz kerak:

    locale-gen ru_RU update-locale LANG=ru_RU.UTF8 dpkg-lokal sozlamalarni qayta sozlash

    6. Agar kerakli til hali ham mavjud bo'lsa, uni sukut bo'yicha o'rnating:

    locale –a nano /etc/default/locale Tarkibni LANG=ru_RU.UTF-8 bilan almashtiring

    7. Qayta ishga tushirilgandan so'ng PostgreSQL versiyamiz uchun kerakli paketlarni o'rnating:

    apt-get install libxslt1.1 ssl-cert

    8.PostgreSQL paketining 9.4.2-1.1C versiyasi libicu paketining libicu48 versiyasi bilan bog‘langan. Kerakli versiya endi omborda yo'q, lekin uni yuklab olishingiz mumkin;

    9.Yuklab oling va PostgreSQL uchun yuklab olingan fayllar saqlanadigan katalogga joylashtiring;

    10.PostgreSQL fayllari bilan katalogga o'tish orqali biz quyidagi buyruqlarni ketma-ket kiritish orqali o'rnatishni amalga oshiramiz:

    CD<Путь к папке с файлами>DPKG -I Libicu48_4.8.1.1-5.6.deb DPKG-Mijoz-Mijoz-Mijoz-Mijoz-Mijoz-Mijoz-Mijoz-Mijoz-Mijoz-Custom-Custom-Calle-Calle-Calle-Custom-Umumiy_154.1.1cg_al.deb dpkg -i postgresql-client-9.4_9.4.2-1.1C_amd64.deb dpkg -i postgresql-9.4_9.4.2-1.1C_amd64.deb dpkg -i postgresql-contrib-9.4_9.4.2-1.1C_deb6

    11. Bajarildi. PostgreSQL DBMS tarqatish to'plami o'rnatildi.

    PostgreSQL-Pro distributivlarini o'rnatish

    Serverni o'rnatish uchun siz quyidagi buyruqlarni ketma-ket bajarishingiz kerak:

    sudo sh -c "echo "deb http:// 1c.postgrespro.ru/deb/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/postgrespro-1c.list" wget --quiet -O - ​​http:// 1c.postgrespro.ru/keys/GPG-KEY-POSTGRESPRO-1C-92 | sudo apt-key add - && sudo apt-get update sudo apt-get install postgresql-pro-1c-9.4

    Serverga kirish uchun fayldagi parametrlarni tahrirlang pg_hba.conf

    cd<Путь до каталога pg_hba.conf>cp pg_hba.conf pg_hba.conf.old bash -c "echo "mahalliy barcha postgres ishonchi" > pg_hba.conf" bash -c "echo "barchasi host all all all md5" >> pg_hba.conf"

    Faylning o'zi quyidagi tuzilishga ega:


    Fayl yaxshi hujjatlashtirilgan, lekin Ingliz tili. Keling, asosiy parametrlarni qisqacha ko'rib chiqaylik:

    • Mahalliy faqat unix orqali mahalliy ulanish
    • Xost TCP/IP ulanishi
    • Hostssl TCP/IP orqali shifrlangan SSL ulanishi (server SSL qo'llab-quvvatlashi bilan qurilgan bo'lishi kerak, ssl parametri ham o'rnatilishi kerak)
    • Hostnossl TCP/IP orqali shifrlanmagan ulanish
    • ishonch autentifikatsiyasiz tan olish
    • rad qilish autentifikatsiyasiz rad etish
    • parol matn parolini tozalash so'rovi
    • md5 MD5 shaklida parol so'rovi
    • ldap LDAP serveri yordamida foydalanuvchi nomi va parolni tekshirish
    • radius RADIUS serveri yordamida foydalanuvchi nomi va parolni tekshirish
    • pam plagin xizmati yordamida foydalanuvchi nomi va parolni tekshirish

    Batafsil va batafsil ma'lumotni PostgreSQL mahsuloti hujjatlarida topish mumkin.

    root@NODE2:/home/asd# xizmati --status-all |grep postgres [ - ] postgresql root@NODE2:/home/asd# xizmati postgresql start root@NODE2:/home/asd# xizmati --status-all | grep postgres [+] postgresql

    Asosiy o'rnatishni tugatgandan so'ng, siz sozlashingiz kerak konfiguratsiya fayli server postgresql.conf, PostgreSQL, 1C server va Ubuntu server konfiguratsiyasining o'ziga xos xususiyatlariga ko'ra.

    MS SQL Server uchun 1C ni optimallashtirish

    O'rnatish Oxirgi yangilanishlar SQL Sever uchun.

    Operatsion tizim bo'sh joyni saqlab qoladi va uni nollar bilan to'ldiradi, bu quyidagi hodisalarda ancha vaqt talab etadi:

    • Ma'lumotlar bazasini yaratish;
    • Mavjud ma'lumotlar bazasiga ma'lumotlar fayllarini, tranzaktsiyalar jurnalini qo'shish;
    • Mavjud fayl hajmini oshirish (shu jumladan Autogrow operatsiyalari);
    • Biz ma'lumotlar bazalarini yoki fayllar guruhlarini tiklaymiz.

    Qaror qabul qilinmoqda bu muammo elementga rolni (server ishlayotgan) qo'shish mahalliy siyosat xavfsizlik "Hajmga texnik xizmat ko'rsatish vazifalarini bajarish."

    Agar iloji bo'lsa, TempDB ma'lumotlar bazasini (u ayniqsa RCSI tomonidan boshqariladigan qulflash rejimida intensiv ravishda qo'llaniladi) va tranzaktsiyalar jurnalini turli disklarga tarqatish kerak.

    U ishlaydigan serverda SQL server, quvvatni tejash rejimi "Yuqori ishlash" ga o'rnatilishi kerak.

    Ma'lumotlar bazasi fayllari bo'lgan papka siqilmasligi kerak.

    Server uchun "Xotira" yorlig'ida biz minimal darajani umumiy xotiraning 50% ga o'rnatdik. Maksimalni formulalardan biri yordamida hisoblaymiz:

    • Maksimal xotira = Umumiy hajm - OS bo'yicha o'lcham - 1C uchun o'lcham (agar u mavjud bo'lsa, hisoblagichlar bilan ishlatilgan xotirani oldindan o'lchagan bo'lsa) yoki
    • Maksimal xotira = Umumiy hajmi - (1024 * Jami hajmi / 16384).

    Biz DOP parametrini "Maksimal parallelizm darajasi" ni cheklaymiz va uni "1" ga o'rnatamiz.

    Statistikani jadvalga muvofiq yangilaymiz. bilan boshlanadi SQL Server 2008 yil, statistik ma'lumotlarni yangilash so'rovlarni qayta kompilyatsiya qilishga olib keladi va shunga mos ravishda protsessual keshni tozalaydi, shuning uchun protsessual keshni tozalash uchun alohida protsedurani bajarishning hojati yo'q.

    Biz vaqti-vaqti bilan jadvalni qayta indekslaymiz va indekslarni defragmentatsiya qilamiz.

    Biz to'g'ri bron qilish siyosatini o'rnatamiz. Agar tizimning ishdan chiqishidan oldin oxirgi vaqtni tiklashingiz shart bo'lmasa va oxirgi 5 daqiqa yoki undan ko'proq vaqt sizning biznesingiz uchun muhim bo'lmasa, tiklash modelini "Oddiy" ga o'rnating. Bu yozib olish tezligini sezilarli darajada tezlashtiradi. Asosiysi, ajratilgan zahirani belgilangan vaqt ichida bajarish mumkin.

    I/U vaqtida TempDB bilan ishlashda qoʻshimcha maʼlumotlar fayllarini yaratish orqali yaxshilanishlarga erishamiz. Agar mantiqiy protsessorlar soni 8 tadan kam bo'lsa, har bir mantiqiy protsessor uchun ma'lumotlar faylini yaratish tavsiya etiladi. Agar 8 dan ortiq mantiqiy protsessorlar mavjud bo'lsa, 8 ta ma'lumot faylini yaratish tavsiya etiladi va 4 ga ko'paytirib, TempDB-dagi yukni hisoblashni unutmang.

    1 noyabr 2012 Erkin tarqatilgan foydalanishning afzalliklari dasturiy ta'minot aniq. Afsuski, kamchiliklar ham aniq - rasmiy yordam yo'q, hujjatlar ko'pincha qarama-qarshi, to'liq emas va hamma joyda tarqalgan. turli manbalar. Ushbu maqola 1C: Enterprise 8 uchun PosgreSQL-ni o'rnatish jarayonini tushunishga yordam beradi va rasmiy hujjatlarda tasvirlanmagan tuzoqlardan qochadi.

    O'rnatish uchun kerakli komponentlar

    PostgreSQL DBMS bepul tarqatiladi va 1C dastur serverining yetkazib berish paketiga kiritilgan. 1C: Enterprise 8 dastur serveri ikkita versiyada mavjud: 32-bit va 64-bit. Postgre ikkalasini ham bajara oladi.

    Shunday qilib, bizda tarqatish to'plamlari mavjud:

    • Postgre: postgresql-9_1_2-1_1Cx64.zip, 1C tomonidan taqdim etilgan.
    • Windows x64 uchun 1C: Enterprise dastur serverining 8.2.16.368 versiyasini tarqatish.

    Bu oddiyroq bo'lishi mumkin emasdek tuyuladi - shunchaki ishga tushiring va o'rnating. Osonlik bilan! Ammo standart rejimda o'rnatish bitta kichik cheklovni beradi: klaster "Dastur fayllari" papkasida joylashgan bo'ladi. Bu hammaga yoqmaydi. Keling, ikkita o'rnatish variantini ko'rib chiqaylik, oddiy va ilg'or.

    Maqola 5 bo'limga bo'lingan:

    1) 1C serverini o'rnatish.

    2) PostgreSQL-ni qo'shimcha sozlamalarsiz 1C-ni ishga tushirish uchun etarli bo'lgan standart shaklda o'rnating.

    3) PostgreSQL-ni o'rnating va klaster saqlash papkasini tanlang.

    4) Yangi 1C axborot bazasini yaratish.

    5) DBMS serverida ma'lumotlar bazasi fayllarini saqlash uchun papkani belgilash.

    O'rnatishdan oldin to'liq maqolani o'qib chiqing!

    1C dastur serverini o'rnatish

    1C server tarqatish to'plami bilan papkadan setup.exe faylini ishga tushiramiz.

    Agar siz dastur serverini xizmat sifatida emas, balki o'rnatsangiz, uni har safar qo'lda ishga tushirishingiz kerak bo'ladi. Ushbu parametr kamdan-kam hollarda talab qilinadi. Biz uni xizmat sifatida o'rnatamiz va qaysi foydalanuvchi tomonidan ishga tushirilishini hal qilamiz. Xavfsizlik nuqtai nazaridan, xizmatning to'liq huquqlar bilan ishlashiga ruxsat berishdan ko'ra, alohida USR1CV82 foydalanuvchisini yaratish yaxshiroqdir.

    Ilova serverini o'rnatganingizdan so'ng, tizim sizni HASP himoya kaliti drayverini o'rnatishingizni taklif qiladi. Biz rozimiz:

    Biz xabar kutmoqdamiz:

    Agar xabar boshqacha bo'lsa, HASP drayverlarining oldingi o'rnatilishidan tizimda "dumlar" qolishi mumkin. Ularning barchasini o'chirib tashlang va qayta urinib ko'ring.

    Bajarildi, biz 1C: Enterprise 8 dastur serverini muvaffaqiyatli o'rnatdik.

    PostgreSQL-ni standart shaklda o'rnatish, qo'shimcha sozlamalarsiz 1C-ni ishga tushirish uchun etarli

    "postgresql-9.1.2-1.1C(x64).msi" ni ishga tushiring

    O'rnatish variantlarini o'zgartirishingiz shart emas, 1C ishlaydi. Keyinchalik.

    Postgre, xuddi 1C serveri kabi, o'zi xizmatni ishlatadigan foydalanuvchini yaratishi mumkin. Men sizning e'tiboringizni shuni ko'rsatsangiz hisob administrator huquqlari bilan xizmat to'g'ri ishlamaydi. Yangi foydalanuvchi yaratishga ishonch hosil qiling.

    Keyingi o'rnatish oynasi.

    Biz klasterni ishga tushiramiz. Agar bizning ma'lumotlar bazasi serverimiz va 1C dastur serverimiz joylashgan bo'lsa turli xil kompyuterlar, keyin "Har qanday IP-dan ulanishlarni qo'llab-quvvatlash" katagiga belgi qo'ying, aks holda biz unga tegmaymiz. UTF8 kodlashni belgilaganingizga ishonch hosil qiling. DBMS superuserini yarating. Yana…

    Dastlabki ish uchun bizga qo'shimcha narsa kerak emas, katakchani olib tashlang va o'rnatishni yakunlang.

    Bizning harakatlarimiz natijasi - foydalanishga tayyor PostgreSQL. Agar biz ma'lumotlar bazalari Program Files\PostgreSQL\9.1.2-1.1C\data-da joylashganligiga ishonchimiz komil bo'lsa, biz shu erda tugatamiz, ma'lumotlar bazalarini ochamiz va jarayondan zavqlanamiz. Biroq, ko'pincha ma'lumotlar bazalari maxsus mo'ljallangan disk massivlarida "yolg'onadi" va emas tizim diski. Ma'lumotlar joylashuvini sozlash uchun o'rnatishdan oldin quyidagi bo'limni o'qing.

    Klaster saqlash joyini tanlash bilan Postgre-ni o'rnatish

    Biz Postgre-ni o'rnatishni davom ettiramiz va bizdan klasterni ishga tushirish talab qilinmaguncha barcha amallarni bajaramiz:

    "Ma'lumotlar bazasi klasterini ishga tushirish" belgisini olib tashlang va "Keyingi" tugmasini bosing.

    Ha, ishonchimiz komil.

    "Chiqishda Stack Builderni ishga tushirish" belgisini olib tashlang va o'rnatishni yakunlang.

    1. Biz PostgreSQL o'rnatgan papkaga to'liq huquqlarni berish kerak, odatda bu C:\Program Files\PostgreSQL.

    2. Administrator sifatida cmd ni ishga tushiring. Agar buni win7 da qilsangiz, uni Administrator sifatida ishga tushiring.

    3. Klaster saqlanadigan papka yarating. Masalan, d:\postgredata.

    md d:\postgredata

    4. Biz klasterni qo'lda ishga tushiramiz, u joylashgan yo'lni ko'rsatamiz.

    “C:\Program Files\PostgreSQL\9.1.2-1.1C\bin\initdb.exe” -D d:\postgredata --locale=Russian_Russia --encoding=UTF8 -U postgres

    5. O'rnatish vaqtida o'rnatilgan PostgreSQL xizmatini olib tashlang.

    sc o'chirish pgsql-9.1.2-1.1C-x64

    Bu erda pgsql-9.1.2-1.1C-x64 - xizmat nomi. Agar siz nomini aniq bilmasangiz, "PostgreSQL ma'lumotlar bazasi serveri..." xizmatining xususiyatlarini ko'rib chiqishingiz mumkin (Ishga tushirish - Boshqarish paneli - Ma'muriy asboblar - Xizmatlar)

    6. Yaratish yangi xizmat bizning klasterimizni ko'rsatadi

    “C:\Program Files\PostgreSQL\9.1.2-1.1C\bin\pg_ctl” registr -N pgsql -U postgresql -P parol -D d:/postgredata

    7. Endi xizmatlarga o'tamiz. Ishga tushirish - Boshqaruv paneli - Boshqaruv - Xizmatlar va xizmatimizni ishga tushiring.

    PostgreSQL yordamida serverda yangi 1C ma'lumotlar bazasini yaratish

    Ma'lumotlar bazasini yaratish uchun bir nechta variant mavjud. 1C server boshqaruv konsoli pgAdmin3 orqali ma'lumotlar bazasini yaratishga urinib ko'rishingiz mumkin. Ammo bu erda siz juda ko'p tushunarsiz savollarga va ko'plab xatolarga duch kelasiz, ularga javoblarni uzoq vaqt davomida qidirasiz. Buni mutaxassislarga qoldiring. Bizning maqsadimiz minimal harakat bilan ishlaydigan bazani olishdir. Keling, bunga erishishning eng oson yo'lini tasvirlab beraylik.

    Biz 1C mijozini ishga tushiramiz.

    "Qo'shish ..." tugmasini bosing.

    Biz ma'lumotlar bazasi nomini topamiz, keyin "1C: Enterprise serverida" ni belgilaymiz.

    Server klasteri 1C: Enterprise- localhost, agar biz 1C serveri o'rnatilgan bir xil kompyuterda ma'lumotlar bazasini yaratayotgan bo'lsak yoki 1C dastur serverining nomi, agar boshqacha bo'lsa.

    Klasterdagi ma'lumotlar bazasining nomi- kelajakda bu nom boshqa kompyuterlardan ulanishda ko'rsatiladi.

    DBMS turi– PostgreSQL-ni tanlang.

    Ma'lumotlar bazasi serveri- PostgreSQL server nomini ko'rsating. Agar biz serverda ma'lumotlar bazasini yaratsak, biz localhost-ni ham ko'rsatamiz.

    Ma'lumotlar bazasi nomi– bu nom bilan PostgreSQL da ma’lumotlar bazasi yaratiladi.

    Foydalanuvchi, parol– PostgreSQL-ni o'rnatishda biz superuser sifatida ko'rsatgan foydalanuvchi nomi. "Agar u mavjud bo'lmasa, ma'lumotlar bazasini yaratish" katagiga belgi qo'yganingizga ishonch hosil qiling.

    Savol tug'iladi - ma'lumotlar bazasi jismonan qayerda saqlanadi? Belgilangan klasterning Baza papkasida. Agar biz barcha asoslar joylashgan joyda yotishini istamasak nima bo'ladi? Hozircha bu borada hech narsa qila olmaymiz, faqat baza yaratamiz va davom etamiz. Yana…

    Ma'lumotlar bazasini saqlash papkasini belgilash

    Shunday qilib, biz bazani yaratdik. Ko'pgina hollarda, bu erda o'rnatish tugaydi. Biroq, agar ma'lumotlar bazalari ko'p bo'lsa va turli xil ma'lumotlar bazalari guruhlari uchun bir nechta disk massivlari mavjud bo'lsa, siz ma'lumotlar bazalarining jismoniy joylashishini ko'rsatishingiz kerak. Buning uchun Start - Programs - PostgreSQL-dan pgAdmin3 ni ishga tushiring. Serverimizga ulaning.

    Siz birinchi marta ulanganingizda, Postgre postgres foydalanuvchisi uchun parol so'raydi (biz o'rnatish vaqtida yaratganmiz).

    Biz yangi TableSpace yaratamiz, bu bizning ma'lumotlar bazalarimiz saqlanadigan papka bo'ladi.

    Ma'lumotlar bazasi fayllari uchun saqlash joyi ko'rsatilgan. KELISHDIKMI.

    Endi biz joylashuvini o'zgartirmoqchi bo'lgan avval yaratilgan ma'lumotlar bazasining xususiyatlarini ochamiz.

    Tablespace xususiyatini o'zgartiring. "OK" tugmasini bosgandan so'ng ma'lumotlar bazasi fayllari avtomatik ravishda ko'chiriladi. Tayyor! Umid qilamizki, maqola siz uchun foydali bo'ldi. Agar shunday bo'lsa, sharh qoldiring va ushbu sahifaga havolalarni baham ko'ring. Rahmat!