Salve.
Nomen meum Vanya est et sum Java elit. Ita accidit ut multum laboro apud PostgreSQL - datorum constituendorum, optimizing structuram, perficiendi, ac paulo DBA in weekends ludendi.
Nuper complura databases in micromissionibus nostris ministravi et bibliothecam Javam scripsi
Disclaimer
Praecipua versio PostgreSQL laboro cum is 10 . Omnes SQL interrogationes utimur, etiam in versione 11 probata sunt. Minima confirmata versio est 9.6.
erectus
Omnia fere ante annum inchoata sunt cum condicione quae mihi mirum erat: creatio auctoris index e caeruleo errore finitus est. Index ipse, more solito, in statu datorum in statu invalido mansit. Log analysis ostendit penuriam
Quaestio una - default configuratione
Probabiliter omnes satis fessi sunt metaphorae de Postgres, quae in capulo factori currere potest, sed ... de configuratione default vere plures interrogationes movet. Ut minimum, valet attentionem sustentationem_work_mem, temp_file_limit, statement_timeout ΠΈ lock_timeout.
In nobis sustentationem_work_mem erat default LXIV MB, ac temp_file_limit aliquid circa 2 GB - simpliciter non satis habuimus memoriam ad faciendum indicem in magna tabula.
Ergo in pg-index-salutis Collecta seriem
Problema duo - duplicata indices
Nostra database vivunt in SSD agitet et utimur HA-configuration cum multiple Mauris interdum, dominum exercitum et n-number of replicas. Orbis spatium valde pretiosum nobis est; non minoris momenti est quam effectus et CPU consummatio. Hinc una ex parte, indicibus lectionis velocitatis indigemus, et ex altera parte, indices superfluos in datorum datorum videre nolumus, cum spatium consumant ac retardant notitias adaequationis.
Et nunc redditis omnibus
Quaestio tres - indices secantes
Plurimi tincidunt noviciae indices in una columna creant. Paulatim, hoc negotio percepto, homines incipiunt quaestiones suas optimizare et indices implicatiores addunt plures columnas inclusas. Ita apparent indices in columnis A, A B +, A+B+C et sic porro. Horum indices duo priores tuto ejici possunt, cum sint praepositiones tertii. Hoc quoque multum spatii orbis servat et diagnostica pro hoc sunt
Quaestio quattuor claves exterarum sine indicibus
Postgres permittit te clavem angustiis externis creare sine indice fauore specifica. In multis adiunctis haec quaestio non est, ac ne manifestare quidem potest.
Idem apud nos est: iustum est ut aliquando in tempore officium, secundum schedulam ac purgationem datorum ordinum testium, "adici" nobis a magistro hospite coeptum sit. CPU et IO in solitudinem veniebant, petitiones retardabantur et opportuno, servitus quingenti. Velox analysis
delete from <table> where id in (β¦)
In hoc casu, sane, index erat per id in tabula scopo, et perpauca monumenta secundum conditionem deleta sunt. Placuit ut omnia laborarent, sed proh dolor non erat.
Mirabilis unus in adiutorium venit explicare analyze et dixit praeter tabulas delendo in tabula scopo, esse etiam integritatem relativam perscriptio, et in una e tabulis actis hoc impedimentum fallit. sequentem scan ob idoneos indices defectus. Ita diagnostica natus est
Quaestio quinque - nullum valorem in indices
Defalta, Postgres nullas valores in indice rerum comprehendit, sed plerumque ibi non necessariae sunt. Ideo diligentissime conor nullas has ejicere (diagnostics where <A> is not null
. Hoc modo magnitudinem unius indicis nostri ab 1877 MB ad 16 KB reducere potui. Et in uno officiorum, magnitudo datorum in summa per 16% diminuta (per 4.3 GB in numeris absolutis) ob exclusionem valorum nullis indicibus. Ingentia in orbe spatii compendia cum modificationibus simplicissimis. π
Quaestio sex - an desunt primaria claves
Ex natura mechanism
Quadam die, mira migratio, omnia monumenta in amplam ac strenue mensam sumpsit et renovavit. +100 GB ad mensam magnitudinem ex caeruleo venimus. Damnum erat pudor, sed infortunia nostra non finierunt. Post autovacuum in hac tabula finita horarum 15 post, claruit locum physicam non reversurum. Ministerium impedire non potuimus et VACUUM FULLUM facere, ita uti decrevimus
In bibliotheca versionis 0.1.5 Facultas colligendi notitias ex bloate tabularum et indices et ei respondere opportune modo adiectum est.
Problemata septem et octo - indices insufficiens et indices insuetos
Duo diagnostica sequentia sunt:
Sicut iam scripsimus, configuratione cum pluribus replicationibus utimur, et lectionis sarcina diversarum exercituum fundamentaliter diversa est. Quam ob rem res evenit ut nonnullae tabulae et indices in quibusdam exercitibus paene non adhibitae sint, et ad analysim statisticam ab omnibus exercitibus in botro colligere debes.
Accessus hic nobis permisit ut plures decem gigabytarum servaremus, sublatis indicibus qui numquam usi sunt, ac indices absentium addendo ad tabulas raro adhibitas.
Ad summam:
Scilicet, omnes fere diagnostica configurare potes
Quaedam diagnostica perfici possunt in probationibus functionis statim postquam migrationes datorum evolutae sunt. Et hoc fortasse unum ex potissimis bibliothecae meae lineamentis est. Exemplum usus inveniri potest in
Sensum efficit compescere pro insuetis vel absentis indicibus, sicut pro bloat, solum in datorum realium. Valores collecti notari possunt
Ego vere spero quod pg-index-salutis utile erit et in demanda. Conferre etiam potes ad progressionem bibliothecae nuntiando problemata quae invenis et nova diagnostica suggeris.
Source: www.habr.com