Vairāk

Kas izraisa lielu shapefile faila lielumu un vai jūs varat to efektīvi samazināt?

Kas izraisa lielu shapefile faila lielumu un vai jūs varat to efektīvi samazināt?


Man ir shapefile, kas satur visus Polijas apgabalus vienā shapefile. Forma failu nodrošina centrālā kartogrāfijas aģentūra. Viņu iesniegtais apgabals ir aptuveni 30 MB.

Tas pats GADM formas fails ir ~ 2 MB liels un satur to pašu detalizācijas pakāpi (apgabalus) ar gandrīz vienādiem atribūtiem. Vienīgā informācija, kuras man trūkst GADM, ir faktiskais apgabala identifikatora atribūts, kuru vēlos izmantot, lai novadus saskaņotu ar maniem datiem.

Es darbinu QGIS un mēģināju vienkāršot ģeometriju, lai samazinātu izmēru. Esmu arī izmēģinājis SimpliPy, Generalizer, bet es nevaru iegūt vairāk par 0,5% - 1% izmēra samazinājumu. Es meklēju Googlē un meklēju Stackexchange, bet neatradu atbildi uz manu jautājumu. Es arī nevarēju atrast palīdzību, lai saprastu, kāpēc viena apgabala formas failu lielums var tik ļoti atšķirties.


Ņemiet vērā, ka “detalizācijas pakāpe” ir relatīvs termins. Tie var parādīt to pašu informāciju, ti, apgabalus, bet detalizācijas pakāpe attiecas arī uz līnijām, kas veido robežas. Viens varētu izmantot simts punktus, lai iezīmētu novadu, bet otrs - pāris tūkstošus. Vienkāršošana / vispārināšana ir tas, ko izmantojat lielākos, lai tie būtu labāk saskaņoti, taču atkarībā no iestatījumiem var nebūt tik lielas ietekmes - vai arī tas var tikt darīts. Vai arī tas var būt uzpūsts / bojāts fails, kas ir jālabo.

radouxju atzīmē, ka lielākajā failā parasti ir divi komponentu faili - .shp vai ģeometrijas informācija un .dbf vai atribūta informācija. Atkarībā no tā, kurš ir šķietamā uzpūšanās avots, diktēs iespējamos risinājumus.

Mapperz ieteica vietni http://www.mapshaper.org/, kurā varat augšupielādēt failu labošanai un vienkāršošanai. Ņemiet vērā, ka vietnē, šķiet, nav opcijas vienkāršot, tāpēc tie būs modificējoši dati. Lai veiktu taisnu remontu, jums būs nepieciešams kaut kas līdzīgs labošanas ģeometrijai ArcGIS vai GRASS 'v.clean caur QGIS. Remonts, iespējams, nemazina faila lielumu, bet arī nemainīs datus. Es neesmu pārliecināts, vai Mapshaper var saglabāt topoloģiju un vienkāršošanas laikā neievest šķipsnas blakus esošajās daudzstūru robežās, lai gan, ja tās sakrīt, es varētu sagaidīt, ka tās pašas izmaiņas droši vien abās līnijās.

RobinC tālāk paskaidroja, ka "Mapshaper jums piešķir tikai .shp failu, un pēc šī faila samazināšanas jums vienkārši jāpārsauc vecais .dbf fails, lai jūsu ģeometrija tiktu vienkāršota un atribūti saglabāti tādi, kādi tie bija."

user30184 apskatīja jūsu iesniegtos oriģinālos failus un atzīmēja, ka lielākajam patiešām bija ievērojami vairāk virsotņu nekā mazākajam (2,25 miljoni pret 68 tūkstošiem apaļā skaitā), kas viegli izskaidro lieluma starpību .shp failā.


Vispārīgi runājot, jūs varat samazināt .shp (ģeometrija) vai .dbf (atribūts) saturu, izmēģinot vispārināšanas rīkus no citām ĢIS pakotnēm, kā norādīja @GISdirtsniffer, vai izdzēšot neizmantotās atribūtu kolonnas.

Jo īpaši jūsu gadījumā, ja tā, kā jūs teicāt

Tas pats GADM formas fails ir ~ 2 MB liels un satur to pašu detalizācijas pakāpi (apgabalus) ar gandrīz vienādiem atribūtiem. Vienīgā informācija, kuras man trūkst GADM, ir faktiskais apgabala identifikatora atribūts ...

Pēc tam sākotnējās centrālās kartogrāfijas aģentūras vietā varat izmantot mazāku GADM ģeometriju. Konkrēti, jūs varat izmantot telpiskā pievienošanās pievienoties sākotnējam shapefile failam GADM un pievienot GADM shapefile atribūtus, piemēram, apgabala identifikatoru, lai jums būtu gan nepieciešamie atribūti, gan mazāks shapefile.


Es izmantotu rīku Vienkāršot, lai samazinātu Vertices skaitu. Ar to esmu saskāries pārāk daudz reižu.


Izņemot acīmredzamo (-Os -s), funkciju pielīdzināšana mazākajai iespējamai vērtībai, kas netiks avarēta (es nezinu ARM izlīdzināšanas prasības), var izspiest dažus baitus uz vienu funkciju.
-O vajadzētu jau ir atspējotas izlīdzināšanas funkcijas, taču tas joprojām var noklusēt uz vērtību, piemēram, 4 vai 8. Ja līdzināšana piem. līdz 1 ir iespējams ar ARM, tas varētu ietaupīt dažus baitus.

-ffast-math (vai mazāk abrazīvs -fno-math-errno) nenosaka errno un izvairās no dažām pārbaudēm, kas samazina koda lielumu. Ja, tāpat kā lielākā daļa cilvēku, jūs tāpat nelasāt errno, tas ir variants.

Pareizi izmantojot __restrict (vai ierobežot) un const, tiek noņemtas liekās slodzes, padarot kodu gan ātrāku, gan mazāku (un pareizāku). Pareizi iezīmējot tīras funkcijas, jo šādi tiek izsaukti funkciju izsaukumi.

Iespējams, palīdzēs LTO iespējošana, un, ja tas nav pieejams, visu avota failu apkopošana binārā failā vienā piegājienā (gcc foo.c bar.c baz.c -o programma, nevis kompo foo.c, bar.c un baz. c vispirms iebilst pret failiem un pēc tam saistīt) būs līdzīgs efekts. Tas visu padara optimizatoram redzamu vienlaikus, iespējams, ļaujot tam darboties labāk.

-fdelete-null-pointer-pārbaudes var būt opcija (ņemiet vērā, ka tas parasti tiek iespējots ar jebkuru O, bet iegultiem mērķiem).

Statisko globālu (cerams, ka jums to nav tik daudz, bet tomēr) ievietošana struktūrā var izraisīt daudz pieskaitāmo tos inicializēt. Es to uzzināju, rakstot savu pirmo OpenGL iekrāvēju. Ja visi funkciju rādītāji atrodas struktūrā un inicializē struktūru ar = <>, tiek ģenerēts viens izsaukums uz memset, savukārt, inicializējot rādītājus, "normāls veids" - simts kilobaitu koda, lai katrs atsevišķi iestatītu nulli.

Izvairieties no statiska, kas nav triviāls-konstruktors vietējais mainīgie, piemēram, velns (POD veidi nav problēma). Gcc inicializēs ne-triviālus konstruktoru statiskos vietējos threadsafe, ja vien jūs neapkopojat ar -fno-threadsafe-statics, kas saista daudz papildu koda (pat ja jūs vispār neizmantojat pavedienus).

Izmantojot kaut ko līdzīgu libowfat, nevis parastajam crt can ļoti samazināt bināro lielumu.


Ar 64 bitu R jaunāko versiju un rgdal jaunāko versiju vienkārši mēģiniet to izlasīt:

Kur "shpfilename" ir faila nosaukums bez paplašinājuma.

Ja tas neizdodas, atjauniniet savu jautājumu, norādot sīkāku informāciju par to, ko jūs darījāt, ko redzējāt, informāciju par failu lielumiem - katru no failiem "shpfilename. *", Informāciju par jūsu R versiju, operētājsistēmu un rgdal versiju.

Labi, tāpēc jautājums ir vairāk par stratēģiju, kā rīkoties ar lieliem failiem, nevis par to, "kā R. var nolasīt šablonu".

Šis ieraksts parāda, kā varētu izmantot sadalīšanas, pielietošanas un rekombinācijas pieeju kā risinājumu, apakškopojot formas failus.

Strādājot ar pašreizējo atbildi, pieņemsim, ka jums ir SpatialPolygonsDataFrame ar nosaukumu shpdata. shpdata būs datu atribūts (pieejams caur @data) ar sava veida identifikatoru katram daudzstūrim (Tiger shape failiem tas parasti ir kaut kas līdzīgs 'GEOID'). Pēc tam varat grupēt šos identifikatorus grupās un apakškopu / apstrādāt / eksportēt shpdata katrai mazajai daudzstūru partijai. Es iesaku vai nu rakstīt starpposma failus kā .csv, vai arī ievietot tos datu bāzē, piemēram, sqlite.


GTiff maska ​​ar formas failu pitonā ar gdal, ogr utt

Labi, pēc nelielas ķengāšanas es esmu komentējis skriptu no vietnes hipersaites otrajā komentāru rindiņā. Skripta mērķis ir sagriezt / maskēt LIELU rastru (ti, kas nevar iekļauties 32 bitu Python 2.7.5 lietojumprogrammā) GTiff formātā ar shapefile ar vairākiem daudzstūriem (katram no tiem ir "Name" ieraksts) un saglabāt sagriezti rasteri "klipa" apakšdirektorijā, kur katrs maskētais režģis tiek nosaukts pēc katra daudzstūra nosaukuma. Tāpat kā oriģinālais skripts, tas pieņem, ka GTiff un shapefile atrodas vienā projekcijā un pareizi pārklājas, un tas apstrādā

100 maskas / sek. Tomēr šo skriptu esmu modificējis, lai 1) darbotos ar pludiņa vērtētu pacēluma režģi, 2) ielādētu tikai lielāka režģa logu atmiņā, kuru ierobežo pašreizējais daudzstūris (ti, lai samazinātu atmiņas slodzi), 2) eksportētu GTiff, kuriem ir pareizā (ti, nenovirzītā) ģeogrāfiskā atrašanās vieta un vērtība.

Tomēr man ir problēmas ar katru maskētu režģi, kam ir tā saucamā "labās puses ēna". Tas ir katram

vertikālā līnija daudzstūrī, kur šīs līnijas labā puse atrodas ārpus norādītā daudzstūra, maskētajā režģī tiks iekļauta viena rastra šūna pa labi no šī daudzstūra puses.

Tādējādi mans jautājums ir, ko es daru nepareizi, kas maskētajam režģim piešķir labo ēnu?


4 Atbildes 4

Gandrīz visi attēla kvalitātes zaudējumi rodas, pirmo reizi saspiežot attēlu kā JPEG. Neatkarīgi no tā, cik reizes JPEG tiek saspiests ar tiem pašiem iestatījumiem, paaudžu zaudējumi aprobežojas ar noapaļošanas kļūdu.

MCU robežas paliek neskartas (8x8 bloki).

Chroma apakšparaugs ir atspējots.

Pastāvīgs DQT (tāds pats kvalitātes iestatījums).

Tomēr noapaļošanas kļūdas var būt lielas - katram atkārtojumam, ja iepriekš minētie kritēriji nav izpildīti, un - ir saprātīgi saglabāt visu oriģinālo failu dublējumus.

JPEG saspiešanas algoritms

Pārvērst krāsu telpu. Ja vēlaties, samaziniet krāsu informāciju (hroma apakšparaugs) (Zudis). Ja tas netiek samazināts, informācijas zudums ir rezultāts noapaļošanas kļūda.

Segmentēšana. Sadaliet katru kanālu 8x8 blokos (MCU = minimālā kodēšanas vienība). (Nezaudēts)

Piezīme. Ja ir iespējota hroma apakšparaugu ņemšana, MCU sākotnējā attēla izteiksmē faktiski var būt 16x8, 8x16 vai 16x16. Tomēr MCU joprojām ir visi 8x8 bloki.

Diskrēts kosinusa pārveidojums (DCT) katrā MCU. Informācijas zudums ir rezultāts noapaļošanas kļūda.

Kvantēšana. Vērtību katrā MCU šūnā dala ar skaitli, kas norādīts kvantēšanas tabulā (DQT). Vērtības ir noapaļotas uz leju, no kurām daudzas kļūs par nulli. Šī ir algoritma galvenā zaudējumu daļa.

Zig-Zag skenēšana. Pārkārtojiet vērtības katrā MCU skaitļu secībā pēc zig-zag modeļa. Nulles, kas radušās kvantēšanas laikā, tiks grupētas kopā. (Nezaudēts)

DPCM = diferenciālā impulsa koda modulācija. Konvertējiet skaitļu secību vieglāk saspiestā formā. (Nezaudēts)

RLE = Darbības garuma kodēšana. Secīgas nulles tiek saspiestas. (Nezaudēts)

Entropija / Huffman kodēšana. (Nezaudēts)

JPEG saspiešana

Pieraksti to krāsu kanālu samazināšana un kvantēšana ir vienīgie apzināti zaudējumus nesošie soļi. Atmetot noapaļošanas kļūdu, visas pārējās darbības ir bez zaudējumiem. Kad kvantēšana ir notikusi, darbības mainīšana un atkārtošana dod identiskus rezultātus. Citiem vārdiem sakot, atkārtota kvantēšana (ar to pašu DQT) notiek bez zaudējumiem.

Principā ir iespējams izveidot atkārtotas atlases algoritmu, kas pēc pirmās kārtas ir bez zaudējumiem. Tomēr, ieviešot ImageMagick, krāsas var krasi mainīties, pirms tiek sasniegts līdzsvara stāvoklis, kā redzams tūkst. Attēlā.

Ņemot vērā optimālos apstākļus, atkārtoti saspiežot JPEG ar vienādiem kvalitātes iestatījumiem, tiks iegūts tieši tāds pats JPEG. Citiem vārdiem sakot, atkārtota JPEG saspiešana ir potenciāli bez zaudējumiem. Praksē JPEG saspiešana nav bezzudumu, bet pakļauta noapaļošanas kļūdai un to ierobežo. Lai gan noapaļošanas kļūdas bieži galu galā tuvojas nullei, lai tiktu izveidots tieši tāds pats attēls, hroma apakšparaugs var izraisīt būtiskas krāsas izmaiņas.

Demonstrācija (tāds pats kvalitātes iestatījums)

Es uzrakstīju šādu bash skriptu, kas izmanto ImageMagick, lai atkārtoti saspiestu JPEG failu noteiktā kvalitātes iestatījumā:

Pēc tam, kad ļāvu tam darboties dažus simtus atkārtojumu, es izpildīju rezultātu md5sum:

Mēs varam redzēt, ka patiešām noapaļošanas kļūda ir saplūdusi līdz nullei un tiek reproducēts tieši tāds pats attēls, atkal un atkal.

Es to esmu atkārtojis vairākas reizes, izmantojot dažādus attēlus un kvalitātes iestatījumus. Parasti tiek sasniegts līdzsvara stāvoklis un precīzi viens un tas pats attēls tiek reproducēts atkal un atkal.

Kā ar @ mattdm rezultātiem?

Esmu mēģinājis atkārtot mattdm rezultātus, izmantojot Imagemagick operētājsistēmā Ubuntu 18.04. Oriģināls bija neapstrādāta pārveidošana par TIFF Rawtherapee, taču šķiet, ka tas vairs nav pieejams. Tā vietā es paņēmu palielināto versiju un samazināju to līdz sākotnējam izmēram (256x256). Tad es atkārtoti saspiedos 75 gadu vecumā, līdz es saņēmu konverģenci. Šis ir rezultāts (oriģināls, 1, n, atšķirība):

Mani rezultāti ir atšķirīgi. Bez patiesā oriģināla atšķirības iemeslu nav iespējams noteikt.

Kā ar @ ths montāžu?

Es atkārtoti saspiedu attēlu no montāžas augšējā kreisā stūra līdz konverģencei pie 90. Tas ir rezultāts (oriģināls, 1, n, atšķirība):

Pēc chroma apakšparaugu iespējošanas krāsas mainās līdz tiek sasniegts līdzsvara stāvoklis.

Mainīšana nelielā skaitā iestatījumu

Mainot mainīgo q2, kvalitātes iestatījumu var ierobežot līdz vienmērīgi sadalītu vērtību kopai.

Priekš neliels iestatījumu izvēles skaits, līdzsvars galu galā var sasniegt, kas redzams, kad md5 vērtības sāk atkārtoties. Šķiet, jo lielāks kopums, jo ilgāk tas paiet, un sliktāks kļūst attēls, pirms var sasniegt līdzsvaru.

Šķiet, ka notiek līdzsvara stāvoklī, ka DCT koeficientam pirms kvantēšanas jābūt dalāmam ar visām (vai lielākai daļai) kvantu vērtībām. Piemēram, ja pārslēgšanās starp diviem DQT, kur DCT koeficients tiek dalīts pārmaiņus ar 3 un 5, līdzsvars tiks sasniegts, kad DCT koeficients dalās ar 15. Tas izskaidro, kāpēc kvalitātes kritums ir daudz lielāks nekā atšķirība starp sākotnējiem iestatījumiem.

Mainīšana starp lielāku iestatījumu skaitu

Eeyore nav apmierināta, kad q2 tiek mainīts šādi:

Lai izveidotu videoklipu, izmantojiet ffmpeg:

Pirmo 9999 atkārtojumu skatīšanās ir gandrīz tāda pati kā ūdens vārīšanās vērošana. Varētu vēlēties dubultot atskaņošanas ātrumu. Šeit ir Eeyore pēc 11999 atkārtojumiem:

Ko darīt, ja mainās MCU robežas?

Ja izmaiņas notiek ierobežotu reižu skaitu, atkārtota kompresēšana, visticamāk, sasniegs līdzsvara stāvokli. Ja katrā atkārtojumā notiek izmaiņas, attēls, iespējams, pasliktināsies līdzīgi kā mainoties DQT.

Kā ar rediģēšanu?

Rekompresēšanas efekts pēc rediģēšanas ir atkarīgs no konkrētās veiktās rediģēšanas. Piemēram, saglabājot to pašu kvalitātes iestatījumu pēc JPEG artefaktu samazināšanas, tie paši artefakti tiktu atjaunoti. Tomēr lokalizētu izmaiņu, piemēram, ārstnieciskās otas, piemērošana neietekmētu apgabalus, kuriem netika pieskāries.

Vislielākais attēla kvalitātes kritums notiek, pirmo reizi saspiežot failu noteiktā kvalitātes iestatījumā. Pēc tam atkārtoti saspiežot ar to pašu iestatījumu, nevajadzētu ieviest izmaiņas, kas būtu lielākas par noapaļošanas kļūdu. Tāpēc es gribētu sagaidīt, ka rediģēšanas un saglabāšanas cikli noteiktā kvalitātes iestatījumā izskatās kā visi citi attēli, kas saglabāti ar tādu pašu kvalitātes iestatījumu (ja vien MCU robežas paliek neskartas un hroma apakšparaugu ņemšana ir atspējota).

Kā ar tiem video?

Kvalitātes iestatījumu mainīšana. (Lielākā daļa videoklipu.)

MCU robežu izjaukšana. (Apgriešana vai pagriešana)

Citi manevri, kas pasliktina attēla kvalitāti vai traucē JPEG algoritmam?

Vai es varu pārrakstīt savus oriģinālus ar saspiestiem JPEG?

Ir saprātīgi saglabāt visu oriģinālo failu dublējumus, bet, ja nejauši pārrakstīsit kādu, bojājumi, visticamāk, būs ierobežoti. Būtu labi arī strādāt JPEG formātā ar atspējotu hroma apakšparaugu.


3 Atbildes 3

Šeit svarīga atšķirība ir starp kešatmiņas kļūdām, ko izraisa jūsu datu kopas lielums, un kešatmiņas izlaidumiem, ko izraisa jūsu kešatmiņas un datu līdzināšanas veids.

Pieņemsim, ka jums ir tiešā kartētā kešatmiņa 32 tūkst., Un ņemiet vērā šādus 2 gadījumus:

Jūs atkārtojat vairākkārt 128k masīvu. Dati nekādā veidā nevar ievietot šo kešatmiņu, tāpēc visi garāmbraucieni ir jaudīgi (izņemot katras rindas pirmo piekļuvi, kas ir obligāta garām, un tā paliks, pat ja jūs varētu bezgalīgi palielināt kešatmiņu).

Jums ir 2 mazi 8k masīvi, taču diemžēl tie abi ir izlīdzināti un kartēti uz vieniem un tiem pašiem komplektiem. Tas nozīmē, ka, lai arī tie teorētiski varētu ievietot kešatmiņā (ja jūs salabojat savu izlīdzinājumu), viņi neizmantos visu kešatmiņas lielumu un tā vietā sacentīsies par vienu un to pašu kopu grupu un mijies viens otru. Tās ir konfliktu kļūdas, jo dati varētu būt piemēroti, taču organizācijas dēļ tie joprojām saduras. Tāda pati problēma var rasties arī ar iestatītajām asociatīvajām kešatmiņām, kaut arī retāk (pieņemsim, ka kešatmiņa ir divvirzienu, bet jums ir 4 izlīdzinātas datu kopas.).

Šie divi veidi patiešām ir saistīti, jūs varētu teikt, ka, ņemot vērā augsto asociativitātes līmeni, iestatīto šķībumu, pareizu datu pielīdzināšanu un citas metodes, jūs varētu mazināt konfliktus, līdz jums lielākoties paliek patiesas jaudas trūkumi, no kuriem nevar izvairīties.


11 Atbildes 11

Satura maiņa ar citu vektoru maina jaudu.

Swap () mainītu tikai iekšējo datu struktūru.

Izmantojot C ++ 11, varat izsaukt dalībnieka funkciju shrink_to_fit (). Standarta 23.2.6.2. Sadaļas projektā ir teikts:

shrink_to_fit ir nesaistošs pieprasījums samazināt jaudu () līdz izmēram (). [Piezīme. Pieprasījums nav saistošs, lai atļautu platumu konkrētām ieviešanas optimizācijām. —Piezīme]

Apskatiet Scott Meyers Effective STL 17. punktu.

Būtībā jūs nevarat tieši samazināt std :: vector krātuves lielumu. resize () un reseve () nekad nemazinās konteinera patieso atmiņas nospiedumu. "Triks" ir izveidot jaunu pareizā izmēra konteineru, kopēt datus un nomainīt tos ar pašreizējo konteineru. Ja mēs vēlētos iztukšot konteineru, tas ir vienkārši:

Ja mums ir jākopē dati, mums tas jādara:

Tas nozīmē, ka tiek izveidots jauns vektors ar datiem no vecā, veicot kopiju, kas būtu nepieciešama jebkurai darbībai, kurai ir jums nepieciešamais efekts. Tad izsaucot mijmaiņas (), vienkārši tiks mainīti iekšējie buferi starp objektiem. Rindas beigās tiek izdzēsts izveidotais pagaidu vektors, taču tajā ir iekšas no vecā vektora, bet vecajā - no jaunās kopijas, kas ir tieši mums vajadzīgais.


7 Atbildes 7

Pārbaudiet pārskatu vaicājumus. Vai jums ir kāds, kurā ir DISTINCT? Vai kādam no viņiem pievienojas Dekarta daļa?

Vai kāds no ziņošanas vaicājumiem piekļūst saistītajiem serveriem kā pievienošanās dalībnieks? Ja tā, tas var izraisīt tempdb žurnāla un datu bāzes pieaugumu.

Kad no rīta darbojas pārskati, vai kāds no tiem avarē?

Mums bija līdzīga problēma, pēc tam, kad mēs izvirzījām PSS zvanu ar Microsoft un padziļināti izpētījām šo problēmu, mēs izklāstījām šādu iespējamo iemeslu un risinājumu.

Iespējamais simptomu cēlonis ir diski / lun, uz kuriem tiek izvietotas lietotāju datubāzes, un kuriem ir nopietnas I / O atbildes problēmas. Tas izraisa lietotāju datu bāzu automātiskās pārbaudes punktu pabeigšanu ļoti ilgi.

Tagad kontrolpunkts tempdb notiek tikai tad, kad tempdb žurnāls ir piepildīts par 70%, un tam ir arī zemāka prioritāte nekā lietotāju datu bāzes kontrolpunktiem. Tātad, efektīvi, kad tiek izsniegts un tiek mēģināts pabeigt automātisku kontrolpunktu lietotāju datu bāzēs, sevišķi straujas tempdb izmantošanas dēļ tempdb žurnālfails tiek ātri aizpildīts, lietojot 70% žurnāla, rodas tempdb kontrolpunkts, bet tas ir rindā aiz lietotāja datu bāzes kontrolpunkta .

Laikā, kas nepieciešams lietotāja datu bāzes kontrolpunkta pabeigšanai, tempdb žurnāla fails tiek aizpildīts, un, ja ir iestatīta autogrow, žurnāla fails pieaug, kad tam nepieciešams vairāk vietas. Tas ir iemesls, kāpēc žurnāla fails turpina pieaugt.

Apkopojot, visticamāk, jūsu aprakstīto simptomu cēlonis ir slikta I / O reakcija no diskiem / Lun jūsu lietotājam un / vai tempdb datu bāzes / žurnāla failiem.

Mēs atrisinājām šo problēmu, kamēr mēs sakārtojām I / O apakšsistēmu, izveidojot brīdinājumu, kas tika aktivizēts, kad tempdb žurnāla fails bija pilns par 75%, un, atbildot uz to, izpildījām darbu, kas piespieda manuālu "CHECKPOINT" (kam ir prioritāte pār automātisko sistēmu kontrolpunkti), notīrot tempdb žurnālu, neļaujot tam automātiski augt bezgalīgi. Joprojām ir laba ideja atstāt žurnālfailu automātiskajā pieaugumā jebkuram citam gadījumam. Turklāt pēc labojuma ievietošanas es ļoti iesakām apsvērt iespēju samazināt tempdb žurnāla faila lielumu līdz kaut kam jēgpilnam atbilstoši jūsu videi.

Kāds ir atkopšanas modelis, kas iestatīts uz temp db? Ja tas nav iestatīts uz Vienkāršs, tad iestatiet uz Vienkāršs. Tam vajadzētu atturēt to no augšanas. Ja tas jau ir iestatīts uz Vienkāršs, es teiktu, ka pastāv pamatproblēma, kas jārisina, un visi mēģinājumi samazināt failu tikai ārstē problēmas simptomus, nevis galveno cēloni.

Pēdējās stundas esmu pavadījis, lasot un izdarot piezīmes par to

Tur ir daudz sīkumu un ieteikumi problēmu novēršanai. Šķiet, ka, ja vien jūsu tempdb nepaplašinās un nekad neapstājas augt, tas, iespējams, aizņem tikai nepieciešamo vietu un sākotnēji bija jākonfigurē tāds lielums. Ir sadaļa par tempdb nepieciešamās vietas novērtēšanu, kā arī izsekošanu, kas varētu aizņemt vietu tempdb. Tā rezultātā pirmā lieta, ko es darīšu, ir pārvietot tempdb uz lielāku disku un redzēt, kas no turienes notiek.

Ir sadaļa ar nosaukumu “Vieta, kas nepieciešama tempdb reģistrēšanai” kas norāda, kuras funkcijas izmanto žurnālu, ir vēl viena agrāka sadaļa, kurā sīki aprakstīta to funkciju kopa, kuras izmanto tempdb.

Sadaļa ar nosaukumu “I / O monitorings” ir dažas idejas par veiktspējas skaitītājiem, ko skatīties. Ātri apskatot manu serveri, ielieciet tos savā teritorijā, iespējams, esat ieguvis io-pudeļu kaklu. Es kādu laiku tos uzraudzīšu un redzēšu, kā viss notiek. Arī tempdb žurnāla fails faktiski tika izmantots mazāk nekā 50% apmērā, kas atbilst idejai, kuru tas šorīt paplašināja zem slodzes un kopš tā laika ir saglabājis šo vietu.

Es eju uz priekšu, pamatojoties uz to, ka izmērs, līdz kuram tas ir pieaudzis, ir tāds, kādam tam jābūt, uzraugiet šo lielumu nākotnē un pārliecinieties, ka neatkarīgi no piedziņas ir vietas izaugsmei. Kā daži šeit ieteica, es izpētīšu, kas tiek izpildīts, paplašinoties temp žurnālam, un redzēšu, vai tur kaut ko var pielāgot. Es arī sekošu tiem io veiktspējas skaitītājiem, lai redzētu, vai kaut kas ir jārisina.

Bija vēl viena interesanta sadaļa ar nosaukumu 'Jaunināšana uz SQL Server 2005' kas norāda, ka tempdb 2005. gadā tiek izmantots vairākām lietām nekā 2000. gadā (gan jaunām, gan esošajām funkcijām, kas iepriekš neizmantoja tempdb). Es tikai nesen veicu jaunināšanu uz 2005. gadu, tāpēc tas varētu būt daļa no iemesla, kāpēc tas pēkšņi ir kļuvis par problēmu. Es neatceros, ka kaut kur citur to būtu redzējis, atsaucoties uz jaunināšanu uz 2005. gadu, kas ir mazliet sāpīgi.


XLSM formāta mērķis ir padarīt Excel saderīgu ar Open XML, taču ir ļoti maz gadījumu, kad mēs faktiski izmantojam Excel XML formātu. Tas samazina izmēru par gandrīz 50%, ja ne vairāk

Piemēram, ja jums ir jāsaglabā akciju cena apmēram 10 gadus un jums ir jāsaglabā akcija Open, High, Low, Close, tas novestu pie (252*10) * (4) šūnas tiek izmantotas

Tā vietā, lai atvērtu, augstu, zemu, aizvērtu izmantotu atsevišķas kolonnas, saglabājiet tās vienā kolonnā ar lauka atdalītāju Atvērt: Augsts: Zems: Aizvērt

Varat viegli uzrakstīt funkciju, lai ikreiz, kad vēlaties, iegūtu informāciju no vienas kolonnas, taču tā atbrīvos gandrīz 2/3 vietas, kuru pašlaik aizņemat


Sprauslu izturēšanās

Nākamā daļa, kas mums jāaplūko, ir uzvedība karstajā vietā un sprauslā. Ideālos apstākļos siltuma zona pilnībā izkausētu kvēldiegu un nodrošinātu stabilu, lamināru plūsmu caur sprauslu, jo tā noapaļo materiālu no sākuma diametra līdz ekstrūzijas platumam.

Pieņemot, ka mūsu pavediens paliek laminārs, tad materiāla plūsma ir tieši tāda pati kā izeja, nekas netraucē. Bet, ja caurulē esošie faktori ir izslēgti, mēs saņemam turbulentu plūsmu. turpmāka lasīšana

Tātad plūsma nav obligāti lineāra, un mēs varam viegli noteikt vairākus faktorus, kas ietekmē sprauslas darbību. Veiksim ātru dažādu faktoru pārskatu:

  • Materiāli apkures laikā izplešas atšķirīgi (ar koeficientu $ alpha $), tādējādi ietekmējot materiāla daudzumu sprauslā, kas savukārt ietekmē tilpuma plūsmas ātrumu un spiedienu sprauslā. Tas ir temperatūra un materiāls atkarīgs. tālāk par šo
  • Materiāla viskozitātei ir milzīga ietekme uz plūsmas uzvedību. Lielākā daļa plastmasas viskozitātes ir atkarīgs no temperatūras bet arī materiāls atkarīgs
  • Sprauslas forma var nedaudz ietekmēt plūsmas ātrumu (galvenokārt, ja tā ir nevienmērīga vai raupja). Tomēr visietekmīgākais faktors ir sprauslas diametrs, kas tieši ietekmē plūsmas ātrumu.

Kā visi šie efekti plūst sprauslā

Pieņemsim, ka plūsma ir nodrošināta un ka mēs varam ignorēt sprauslas berzi uz materiāla. Tad mēs iegūstam Freemana formulu plūsmai:

$ Q = Av $ kur Q ir tilpuma plūsma 0,001 m³ / s, A sprauslas laukums m², v ir ātrums pie izejas m / s.

$ A = r ^ 2 pi $ ir labi zināma apļa formula, r ir sprauslas rādiuss, kas ir puse no sprauslas diametra
$ A_ <0.4 text > = 1.256 times10 ^ <-7> text ^ 2 $

$ v = sqrt <2P> $ ir Bernulli vienādojums, kas mums norāda, ka plūsmas ātrums ir atkarīgs no spiediena (skat. 1. sprauslu uzvedības punktu). Rezultātā mēs saprotam, ka tilpuma plūsma caur mūsu sprauslu ir atkarīga no šāda spiediena:

$ Q = sqrt 2 pi reizes r reizes sqrt P $
$ Q_ <0.4 text > = 1.777 times10 ^ <-7> text ^ 2 times sqrt

$

Spiediens sprauslā ir tā spiediena summa, ko rada spēks, ar kuru materiālu iespiež ekstruders ($ P_F = F / A '$), un materiāla izplešanās sprauslā ($ P_e $).

Kā mēs izveidojām daļu ekstrūdera, ekstrūzijas ātrums ir nedaudz atkarīgs no uzkarinātā pārnesuma faktiskā diametra $ d_e $. Apstrādātā pārnesuma faktiskais diametrs ietekmē arī spiedienu sprauslā: cik dziļi kvēldiega grieztie zobi nosaka spēku, ko tie pārraida. Otrs faktors, kas ietekmē kvēldiega pārraidīto spēku, ir ekstrūzijas ātrums $ v_e $, tādējādi mēs rakstām $ F (d_e, v_e) $. Turklāt faktiskais kvēldiega diametrs $ A '$ spēlē vēl vienu faktoru, kā tas tika pētīts kvēldiega efektos. Termiskā izplešanās, kas ir atkarīga no materiāla koeficienta $ alpha $ un Temperatūras paaugstināšanās $ Delta T $, palielina spiedienu sprauslā, tādējādi mēs rakstām $ P_e ( alpha, Delta T) $. Tātad tilpuma plūsmas no sprauslas izteiksme ir

$ Q = sqrt 2 reizes r pi reizes sqrt < frac+ P_e ( alfa, Delta T)> $

Ja šī plūsma ir lamināra un nemierīga, to var nolasīt no pievienotā Reinoldsa skaitļa $ Re $, kas ir atkarīgs no (dinamiskās / kinemātiskās) viskozitātes $ mu = frac nu rho $ (rho ir blīvums). Viskozitāte ir atkarīga no temperatūras, tāpēc mēs rakstām $ nu (T) $. Reinoldsa skaitļa formulas pēdējais faktors ir hidrauliskais diametrs $ D_H $, kas mūsu gadījumā samazinās līdz sprauslas diametram, tātad $ D_H = 2r $. Mūsu gadījumā tas dod:


Skatīties video: DWG To SHP