Datu bāzes veiktspēja ir nopietns bizness, bet kāpēc nav jautri izpētīt tās izaicinājumus un sarežģītību? 😉 Šeit ir diezgan fantastisks stāsts, ko mēs prezentējām 1. nodaļā . Database Performance at Scale, bezmaksas atvērtā piekļuves grāmata Datu bāzes veiktspēja mērogā Datu bāzes veiktspēja mērogā Šeit aprakstītās tehniskās tēmas tiek paplašinātas visā grāmatā. bet šī ir vienīgā reize, kad mēs runājam par nabadzīgo Patriku. Ļaujiet viņa cīņām dot jums dažas vērtīgas mācības, mierinājumu jūsu pašu datu bāzes veiktspējas predikātos ... un varbūt arī dažas smiekli. * ir Pēc darba zaudēšanas uzņēmumā FAANG MAANG (MANGA?) Patriks nolēma atkāpties pats un nodibināja nišu tiešsaistes veikalu, kas veltīts viņa absolūtajam favorītam starp galvassegu, zaļajiem fedorām. Pēc dažiem eksperimentiem ar piedāvājuma bezmaksas līmeni, Patriks nolēma parakstīt viena gada līgumu ar lielu mākoņu piegādātāju, lai iegūtu ievērojamu atlaidi par NoSQL datu bāzes kā pakalpojuma piedāvājumu. Ar paredzēto caurlaidību, kas spēj apkalpot līdz pat 1000 klientiem katru sekundi, tehnoloģiju kaudze bija gatava un veikals atvēra savas virtuālās durvis klientiem.Patrika vilšanās, katru dienu vietni apmeklēja mazāk nekā desmit klienti.Tajā pašā laikā spīdīgs jauns datu bāzes klasteris turpināja darboties, ko veicināja pastāvīga naudas plūsma no viņa kredītkartes un gaida, lai tā potenciāls tiktu izmantots. Patrick’s Diary of Lessons Learned, Part I Patrika mācīto mācību dienasgrāmata, I daļa Mācības sākās nekavējoties: Lai gan dažas datu bāzes reklamē sevi kā universālas, lielākā daļa no tām vislabāk darbojas noteiktu veidu darba slodzēm. Vai ir iespējams prognozēt pastāvīgu pieprasījumu plūsmu (piemēram, atjauninājumus periodiski saņem no citām sistēmām)? Vai atšķirība ir augsta un grūti prognozējama, sistēma potenciāli ilgu laiku paliek tukša, ar laiku pa laikam pārtraucot darbību? Datu bāzes kā pakalpojuma piedāvājumi bieži ļauj izvēlēties starp paredzēto caurlaidību un pēc pieprasījuma iegādi. Lai gan pirmais ir izmaksu ziņā efektīvāks, tas rada zināmas izmaksas neatkarīgi no tā, cik aizņemta ir datu bāze. Pēdējais maksā vairāk par pieprasījumu, bet jūs maksājat tikai par to, ko izmantojat. Dodiet sev laiku, lai novērtētu savu izvēli un izvairītos no ilgtermiņa līgumiem (pat ja jūs vilina atlaide), pirms redzat, ka iestatījums darbojas jums ilgtspējīgā veidā. Pirmais Spike 17. marts šķita kā ļoti laimīga diena.Patriks bija priecīgs pamanīt daudzus jaunus pasūtījumus, sākot no agra rīta.Bet, kad aktīvo klientu skaits pieauga ap pusdienlaiku, Patrika noskaņojums sāka pasliktināties. Pēc īsas brainstorming sesijas ar sevi un tīmekļa meklētājprogrammu, Patriks saprata, ka viņam trūkst novērojamības rīku savā vērtīgajā (un diezgan dārgā) datu bāzē. "Provisioned caurlaidība uzbrūk vēlreiz," Patriks kliedza sev, vienlaikus skrāpējot caur tūkstošiem "pārsniedza caurlaidību" kļūdas ziņojumus, kas sāka parādīties ap 11am. Patrick’s Diary of Lessons Learned, Part II Patrika mācīto mācību dienasgrāmata, II daļa Lūk, ko Pēteris iemācījās: Ja jūsu darba slodze ir jutīga pret piepūli, sagatavojieties tam un mēģiniet veidot savu klasteri, lai tas varētu izdzīvot pagaidu paaugstinātai slodzei.Datu bāzes kā pakalpojuma risinājumi mēdz ļaut dinamiski konfigurēt paredzēto caurlaidību, kas nozīmē, ka pieņemto pieprasījumu slieksni reizēm var īslaicīgi paaugstināt līdz iepriekš konfigurētam līmenim. Pat ja jūsu darba slodze ir absolūti stabila, īslaicīga aparatūras kļūme vai pārsteidzošs DDoS uzbrukums var izraisīt strauju ienākošo pieprasījumu pieaugumu. Tas ļauj izstrādātājiem retrospektīvi izmeklēt neveiksmi.Tāpat tas nodrošina reāllaika brīdinājumus, kad tiek atklāts iespējamais neveiksmes scenārijs, ļaujot cilvēkiem ātri reaģēt un vai nu novērst lielāku neveiksmi, vai vismaz samazināt negatīvo ietekmi uz klasteri. Pirmais zaudējums Patriks pat neizdevās atgūties no traumas zaudēt lielāko daļu sava potenciālā ienākuma vienīgajā dienā visa gada garumā, kurā zaļie fedoras piedzīvoja jebkāda veida pieprasījumu, kad ieradās vēstule. Bez turpmākiem pārsteigumiem Patriks pārmeklēja datubāzi. Viņa pārsteigumam viņš arī neatrada nekādus pasūtījuma pēdas. Lai būtu pilnīgs, Patriks arī ievietoja savu vēlamo domāšanu praksē, pārlūkojot backup snapshot direktoriju. Tas palika tukšs, jo viens no Patrika sākotnējiem izpilddirektora lēmumiem bija ietaupīt laiku un naudu, neplānojot nekādas periodiskas backup procedūras. Pēc viņa izvēlētās datu bāzes konsekvences modeļa izpētes Patriks saprata, ka pastāv vienprātība starp konsekvences garantijām, veiktspēju un pieejamību. Konfigurējot vaicājumus, var pieprasīt linearizabilityFootnote7 par samazinātas caurlaidības izmaksām vai samazināt konsekvences garantijas un attiecīgi palielināt veiktspēju. Augstākas caurlaidības iespējas bija nepatīkamas Patrickam pirms dažām dienām, bet galu galā klientu dati nonāca vienā serverī bez jebkādām sistēmā izplatītajām replikām. Patrick’s Diary of Lessons Learned, Part III Patrika mācīto mācību dienasgrāmata, 3. daļa Citas mācības ietver: Drošības kopijas ir būtiskas izplatītajā vidē, un nav tādas lietas kā dublēšanas rutīnas iestatīšana "pārāk drīz." Katrai datu bāzes sistēmai ir noteikts konsekvences modelis, un ir svarīgi to ņemt vērā, izstrādājot savu projektu. Var būt kompromisi. Dažos lietošanas gadījumos (domājiet par finanšu sistēmām) konsekvence ir atslēga. Citos gadījumos iespējamā konsekvence ir pieņemama, ja vien tā saglabā sistēmu ļoti pieejamu un reaģējošu. Spike atkal uzbrūk Ar regulāriem dublējumiem, pārveidotu konsekvences modeli un atgādinājumu, kas ievietots viņa kalendārā 16. martā, lai palielinātu klasteri, lai pārvaldītu paaugstinātu satiksmi, viņš jutās mēreni droši. Ja vien viņš zinātu, ka desmit sekunžu video par kaķi, kas ģērbts kā leprečauns, tikko kļuva par vīrusu Malaizijā ... kas, ņemot vērā laika zonu, notika ap 2:00 Patrika laikā, iznīcinot iepriekš minētos miega stabilizācijas centienus. No vienas puses, novērojamības komplekts darīja savu darbu un uzsāka brīdinājumu agri, ļaujot ātri reaģēt. No otras puses, lai gan Patriks reaģēja savlaicīgi, datu bāzes reti spēj nekavējoties palielināt, un viņa izvēles sistēma šajā sakarā nebija izņēmums. Konkurences pieaugums bija ļoti augsts un koncentrēts, jo tūkstošiem Malaizijas pusaudžu steidzās iegādāties zaļās cepures, lai meklētu pastāvīgi mainīgās interneta tendences. , ko viņš vāji atcerējās no savām dienām universitātē. ar skaisti saīsinātu formulu, L = λW, likumu var vienkāršot uz to, ka vienlaicīgums ir vienāds ar caurlaidības laiku aizkavēšanos. Mazā likums Tiem, kam ir grūtības atcerēties formulu, padomājiet par vienībām. konkurence ir tikai skaitlis, aizkavēšanos var izmērīt sekundēs, bet caurlaidība parasti tiek izteikta 1/s. Tad ir pamatoti, ka, lai vienības atbilstu, vienlaicīgumu vajadzētu iegūt, reizinot aizkavēšanos (sekundes) ar caurlaidību (1/s). TIP: Tipiņi : Caurlaidība ir atkarīga no aparatūras un, protams, ir tās ierobežojumi (piemēram, jūs nevarat sagaidīt, ka NVMe disks, kas iegādāts 2023. gadā, jums sniegs datus terabaitos sekundē, lai gan mēs pārtraucam mūsu pirkstus, lai šis pieņēmums netiktu atcelts tuvākajā nākotnē!) Kad limits ir sasniegts, jūs varat to uzskatīt par pastāvīgu formulā. Tad ir skaidrs, ka, palielinoties konkurencei, tāpat ir arī aizkavēšanās. Galalietotājiem — Malaizijas pusaudžiem šajā scenārijā — tas nozīmē, ka aizkavēšanās galu galā šķērso burvju barjeru par vidējo cilvēka uztveri dažas sekundes. Kad tas notiek, lietotāji kļūst pārāk neapmierināti Patrick’s Diary of Lessons Learned, Part IV Patrika mācīto mācību dienasgrāmata, IV daļa Mācības turpinās: Negaidīti pīķi ir neizbēgami, un klastera paplašināšana var nebūt pietiekami ātra, lai mazinātu pārmērīgas konkurences negatīvo ietekmi. Gaidot, ka datu bāze to pareizi apstrādās, nav bezjēdzīgi, bet ne katra datu bāze to spēj. Ja iespējams, pēc iespējas ātrāk ierobežojiet konkurenci savā sistēmā. Piemēram, ja datu bāzi nekad tieši neiekļauj klienti (kas ir ļoti laba ideja vairāku iemeslu dēļ), bet tā vietā piekļūst ar mikroservisiem, kas atrodas jūsu kontrolē, pārliecinieties, ka mikroservisi arī apzinās konkurences ierobežojumus un ievēro tos. Paturiet prātā, ka Little likums pastāv – tā ir pamatzināšanas ikvienam, kas interesējas par izplatītajām sistēmām. Backup Strikes Atpakaļ Pēc tam, kad viņš vēlreiz pārveidoja savu projektu, lai ņemtu vērā gaidītās un negaidītās konkurences svārstības, Patriks ar prieku gaidīja, ka viņa fedora bizness beidzot kļūs par ramen rentablu. Diemžēl nākamais 17. marts arī nenāca tik gludi, kā gaidīts. Patriks lielāko daļu dienas pavadīja, baudot stabilas Grafana kontroles plāksnes, kas turpināja viņam apliecināt, ka satiksme bija kontrolēta un spēj pārvaldīt klientu slodzi, ar veselīgu drošu maržu. Bet tad kontroles plāksnes apstājās, laipni pieminot, ka diski kļuva smagi pārmērīgi izmantoti. Tas šķita pilnīgi nepareizi, ņemot vērā novēroto vienlaicību. Meklējot iespējamo šīs anomālijas avotu, Patriks pamanīja, lai viņa šausmas, ka plānotā rezerves procedūra sakrita ar ikgadējo maksimālo slodzi... Patrick’s Diary of Lessons Learned, Part V Patrika mācīto mācību dienasgrāmata, V daļa Noslēguma domas : Datu bāzes sistēmas gandrīz nekad nav tukšas, pat bez ienākošajiem lietotāja pieprasījumiem.Uzturēšanas operācijas bieži notiek, un jums ir jāņem vērā, jo tās ir iekšējs naudas un resursu patēriņa avots. Kad vien iespējams, plānojiet tehniskās apkopes iespējas laikā, kad sistēmā ir paredzams zems spiediens. Ja jūsu datu bāzes pārvaldības sistēma atbalsta jebkāda veida pakalpojumu kvalitātes konfigurāciju, ir ieteicams izpētīt šādas iespējas. Piemēram, var būt iespējams noteikt lielu prioritāti lietotāja pieprasījumiem salīdzinājumā ar regulārām apkopes darbībām, it īpaši pīķa stundās. Attiecīgi, periodus ar zemu lietotāja induktu aktivitāti var izmantot, lai paātrinātu fonu darbību. Datu bāzes pasaulē sistēmām, kas izmanto LSM koku variantu pamata uzglabāšanai, ir jāveic diezgan maz kompresiju (dažāda veida apkopes darbība uz datiem), lai saglabātu lasīšanas/rakstīšanas veiktspēju paredzamu un stabilu. Tā beigas . Piotr Sarna ir programmatūras inženieris, kurš ir ieinteresēts atvērtā koda projektos un Rust un C++ valodās. Viņš iepriekš izstrādāja atvērtā koda izplatītu failu sistēmu un īsu piedzīvojumu ar Linux kodolu Samsung Electronics apmācības laikā. Viņš ir arī ScyllaDB, kā arī libSQL ilgstošs ieguldītājs un uzturētājs. Piotr absolvējis Varšavas universitāti ar MSc datorzinātnē. Viņš ir grāmatas "Database Performance at Scale" un "Writing for Developers: Blogs that Get Read" līdzautors. Pēteris