{"id":21231,"date":"2026-09-01T11:49:31","date_gmt":"2026-09-01T09:49:31","guid":{"rendered":"https:\/\/webhosting.de\/mariadb-instant-add-column-ohne-downtime-schemaupdate-datenbank\/"},"modified":"2026-09-01T11:49:31","modified_gmt":"2026-09-01T09:49:31","slug":"mariadb-instant-add-column-utan-driftstopp-schemauppdatering-databas","status":"publish","type":"post","link":"https:\/\/webhosting.de\/sv\/mariadb-instant-add-column-ohne-downtime-schemaupdate-datenbank\/","title":{"rendered":"MariaDB Instant ADD COLUMN: Schema\u00e4ndringar utan driftstopp f\u00f6r moderna databaser"},"content":{"rendered":"<p>Med Instant ADD COLUMN introducerar MariaDB en teknik som g\u00f6r att jag kan l\u00e4gga till nya kolumner i stora InnoDB-tabeller i realtid \u2013 utan n\u00e4mnv\u00e4rda l\u00e5sningar och utan driftstopp. INSTANT-algoritmen skriver inte om n\u00e5gra data, utan ut\u00f6kar endast <strong>Metadata<\/strong> och genererar d\u00e4rmed nya kolumner med standardv\u00e4rden.<\/p>\n\n<h2>Centrala punkter<\/h2>\n\n<p>F\u00f6ljande nyckelbudskap hj\u00e4lper mig att snabbt f\u00e5 en \u00f6verblick \u00f6ver m\u00f6jligheterna med omedelbara operationer och fatta r\u00e4tt beslut f\u00f6r produktiva system. Jag sammanfattar de viktigaste aspekterna och s\u00e4tter dem i relation till typiska administrationsuppgifter. Utifr\u00e5n samspelet mellan version, tabelllayout och DDL-strategi h\u00e4rleder jag konkreta \u00e5tg\u00e4rder. Listan fungerar som ett kompakt memo f\u00f6r det dagliga arbetet <strong>Databas<\/strong> Administration. Efter \u00f6versikten g\u00e5r jag n\u00e4rmare in p\u00e5 implementering, fallgropar och praktiska exempel.<\/p>\n\n<ul>\n  <li><strong>Stillest\u00e5ndstid<\/strong> minimera: Skapa nya kolumner p\u00e5 n\u00e5gra millisekunder utan ombyggnad och kopieringsprocesser.<\/li>\n  <li><strong>Online DDL<\/strong> Styr s\u00e4kert: Ange uttryckligen ALGORITHM=INSTANT och LOCK=NONE.<\/li>\n  <li><strong>Version<\/strong> Observera: 10.3 endast den sista kolumnen, fr\u00e5n och med 10.4 flexibla positioner och mer.<\/li>\n  <li><strong>Metadata<\/strong> I st\u00e4llet f\u00f6r data: Ingen fysisk omskrivning, standardv\u00e4rdena ska tillhandah\u00e5llas logiskt.<\/li>\n  <li><strong>Skalning<\/strong> underl\u00e4tta: Kortare replikeringsf\u00f6rdr\u00f6jning och planerbara drifts\u00e4ttningar.<\/li>\n<\/ul>\n\n<p>Punkterna ger f\u00f6rst verklig effekt n\u00e4r jag kontrollerar kompatibilitetsaspekter som ROW_FORMAT eller specialindex och verifierar dem genom tester. P\u00e5 s\u00e5 s\u00e4tt h\u00e5ller jag \u00e4ndringar i stora tabeller under kontroll och klarar \u00e4ven vid toppbelastning <strong>kapabel att agera<\/strong>.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/09\/mariadb-schemaaenderung-1456.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Varf\u00f6r Instant ADD COLUMN \u00e4ndrar spelreglerna<\/h2>\n\n<p>F\u00f6rr betydde ett klassiskt <code>ALTER TABLE ... ADD COLUMN<\/code> ofta timsl\u00e5nga kopieringsprocesser, l\u00e5sningar som blockerar systemet och m\u00e4rkbara <strong>Stillest\u00e5ndstid<\/strong>. Det passade d\u00e5ligt ihop med agila releaser och applikationer som k\u00f6rs dygnet runt, d\u00e4r varje underh\u00e5llsf\u00f6nster \u00e4r kostsamt. Med INSTANT-algoritmen flyttas arbetsinsatsen fr\u00e5n dataniv\u00e5n till katalogniv\u00e5n, vilket g\u00f6r att \u00e4ndringar g\u00e5r extremt snabbt \u00e4ven n\u00e4r det g\u00e4ller miljarder rader. Jag kan tillhandah\u00e5lla nya attribut i drift utan att avbryta den l\u00f6pande belastningen. Det ger mig utrymme f\u00f6r snabba iterationer och <strong>Release<\/strong>-Klocksignal.<\/p>\n\n<p>Ur ett driftsperspektiv minskar riskerna och samordningsinsatserna, eftersom jag inte l\u00e4ngre beh\u00f6ver planera n\u00e5gra st\u00f6rre ombyggnader. Denna strategi p\u00e5verkar direkt replikering, s\u00e4kerhetskopieringsf\u00f6nster och applikationsdrift. D\u00e4r ett team tidigare samordnade nattliga insatser r\u00e4cker det idag ofta med en kort f\u00f6r\u00e4ndring med en tydlig implementeringsplan. Det g\u00f6r att jag kan testa produktid\u00e9er snabbare och s\u00e4tta dem i produktion. P\u00e5 s\u00e5 s\u00e4tt blir databasunderh\u00e5ll en <strong>Drivkrafter f\u00f6r tillv\u00e4xt<\/strong>.<\/p>\n\n<h2>S\u00e5 h\u00e4r fungerar INSTANT-algoritmen bakom kulisserna<\/h2>\n\n<p>Principen \u00e4r enkel: InnoDB ut\u00f6kar tabellbeskrivningen och l\u00e4gger till en s\u00e4rskild post i klusterindexet, ist\u00e4llet f\u00f6r att fysiskt hantera varje rad. P\u00e5 s\u00e5 s\u00e4tt existerar nya kolumner logiskt, och vid l\u00e4sning returnerar motorn antingen standardv\u00e4rdet eller ett lagrat <strong>V\u00e4rde<\/strong>. Denna \u00e4ndring tar O(1) tid i f\u00f6rh\u00e5llande till antalet datarader, eftersom inga sidor skrivs om. Sekund\u00e4rindex f\u00f6rblir of\u00f6r\u00e4ndrade, vilket undviker ytterligare I\/O-arbete. Jag drar nytta av kortast m\u00f6jliga l\u00e5s, minimal I\/O och mycket sm\u00e5 <strong>Transaktioner<\/strong>.<\/p>\n\n<p>S\u00e5 snart jag skriver in data i den nya kolumnen lagrar InnoDB dessa v\u00e4rden som vanligt. Fram till dess handlar det bara om en virtuell ut\u00f6kning av strukturen. Just d\u00e4rf\u00f6r kan m\u00e5nga produktionsscheman ut\u00f6kas utan driftst\u00f6rningar. Jag \u00e4r dock medveten om att vissa kombinationer av format och funktioner kan f\u00f6rhindra Instant. En snabb kontroll i f\u00f6rv\u00e4g besparar mig senare <strong>\u00d6verraskningar<\/strong>.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/09\/mariadb_schema_aenderung_2843.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Versioner, format och begr\u00e4nsningar<\/h2>\n\n<p>I MariaDB 10.3 kan jag endast l\u00e4gga till den nya kolumnen direkt i slutet av tabellen; om jag anger en position faller operationen tillbaka till en l\u00e5ngsammare algoritm. Fr\u00e5n och med MariaDB 10.4 m\u00f6jligg\u00f6r ett ut\u00f6kat dataformat infogningar p\u00e5 n\u00e4stan vilken plats som helst, omedelbar DROP COLUMN och \u00e4ndringar av kolumnordningen. Vissa radformat \u00e4r dock inkompatibla, s\u00e5som <code>ROW_FORMAT=COMPRESSED<\/code>, och specialindex kan medf\u00f6ra begr\u00e4nsningar. Jag kontrollerar dessutom om <code>innodb_instant_alter_column_allowed<\/code> begr\u00e4nsar funktionaliteten. F\u00f6rst n\u00e4r version, format och variabler st\u00e4mmer ger INSTANT mig det resultat jag hoppats p\u00e5 <strong>F\u00f6rm\u00e5n<\/strong>.<\/p>\n\n<p>En snabb verklighetskontroll kan vara till hj\u00e4lp: <code>SELECT VERSION();<\/code>, <code>SHOW CREATE TABLE ...;<\/code> och en torr <code>ALTER TABLE ... ADD COLUMN ... ALGORITHM=INSTANT, LOCK=NONE;<\/code> p\u00e5 staging-milj\u00f6n. Om jag ser ett felmeddelande stoppar jag \u00e4ndringen i produktionsmilj\u00f6n och justerar designen eller inst\u00e4llningarna. P\u00e5 s\u00e5 s\u00e4tt f\u00f6rhindrar jag o\u00f6nskade ombyggnader och de belastningstoppar som f\u00f6ljer av dem. S\u00e4rskilt n\u00e4r det g\u00e4ller mycket stora tabeller l\u00f6nar sig detta f\u00f6rfarande. Jag f\u00f6redrar att fatta beslut i testmilj\u00f6n snarare \u00e4n under <strong>Produktionstryck<\/strong>.<\/p>\n\n<h2>Gr\u00e4nser i detalj: datatyper, standardv\u00e4rden och specialfall<\/h2>\n\n<p>F\u00f6r att INSTANT ska fungera m\u00e5ste spaltdefinitionerna f\u00f6lja vissa regler. F\u00f6ljande tumregel har visat sig fungera v\u00e4l: <strong>enkla, fasta standardv\u00e4rden<\/strong> fungerar, men komplexa uttryck g\u00f6r det ofta inte. Jag s\u00e4tter allts\u00e5 <code>DEFAULT NULL<\/code> eller ett tydligt literalt v\u00e4rde (tal, str\u00e4ng), men undvik funktionsanrop som <code>NOW()<\/code>, <code>UUID()<\/code> eller beroende uttryck. F\u00f6r text- och blob-liknande typer g\u00e4ller ytterligare begr\u00e4nsningar beroende p\u00e5 version; jag f\u00f6rlitar mig inte p\u00e5 magk\u00e4nslan, utan testar med en realistisk staging-dump.<\/p>\n\n<p>Det \u00e4r inte alla attributtyper som l\u00e4mpar sig f\u00f6r en \u201eomedelbar\u201c start: En kolumn med <code>AUTO_INCREMENT<\/code> inf\u00f6ra, och dessutom direkt en <strong>Unikt index<\/strong> bygga eller placera dem direkt i en <strong>Referensnyckel<\/strong> om man anv\u00e4nder det hamnar man snabbt utanf\u00f6r Instant-v\u00e4gen. I s\u00e5dana fall delar jag upp \u00e4ndringen i flera steg: f\u00f6rst kolumnen (INSTANT), sedan index\/begr\u00e4nsning (vanligtvis INPLACE). <strong>Genererade<\/strong> eller . <strong>virtuell<\/strong> Kolumner kontrollerar jag separat; beroende p\u00e5 utskrift och motor anv\u00e4nds olika algoritmer. Teckenupps\u00e4ttning och <strong>Kollationering<\/strong> Jag anger detta uttryckligen f\u00f6r att undvika \u00f6verraskningar vid sortering eller j\u00e4mf\u00f6relser senare.<\/p>\n\n<p>Dessutom <strong>Positionsf\u00f6r\u00e4ndringar<\/strong> f\u00f6rblir versionsberoende: I 10.3 tvingar jag kolumnerna till slutet, fr\u00e5n och med 10.4 har jag n\u00e4stan fria h\u00e4nder. Trots det \u00e4r jag uppm\u00e4rksam p\u00e5 ORM:er och verktyg som adresserar kolumner via ordinalposition \u2013 d\u00e4r kan redan en f\u00f6rskjutning utan datakopia orsaka logiska fel. Jag planerar allts\u00e5 positionen inte bara ur ett tekniskt perspektiv, utan \u00e4ven med tanke p\u00e5 applikationskoden.<\/p>\n\n<h2>B\u00e4sta praxis: s\u00e4ker implementering<\/h2>\n\n<p>Jag formulerar alltid DDL:er explicit f\u00f6r att undvika otydliga fallback-l\u00f6sningar. Med <code>ALGORITM=INSTANT<\/code> och <code>LOCK=INGEN<\/code> tvingar jag MariaDB att anv\u00e4nda den snabba varianten, annars f\u00e5r jag ett tydligt motstridigt svar. Leder kolumnen <code>NOT NULL<\/code>, anger jag ett l\u00e4mpligt standardv\u00e4rde s\u00e5 att gamla rader blir logiskt korrekta <strong>V\u00e4rden<\/strong> leverera. Innan lanseringen m\u00e4ter jag latenser, replikeringsbeteende och l\u00e5stid p\u00e5 staging-milj\u00f6n. Dessutom dokumenterar jag \u00e4ndringen noggrant i \u00e4ndringsloggen f\u00f6r <strong>Databas<\/strong>.<\/p>\n\n<p>Anv\u00e4ndbara exempel \u00e4r till stor hj\u00e4lp i praktiken: <code>ALTER TABLE orders ADD COLUMN marketing_tag VARCHAR(40) DEFAULT '' NOT NULL ALGORITHM=INSTANT, LOCK=NONE;<\/code>. Eller f\u00f6r 10.4+: <code>ALTER TABLE users ADD COLUMN plan INT DEFAULT 0 NOT NULL AFTER status ALGORITHM=INSTANT, LOCK=NONE;<\/code>. I b\u00e5da fallen kontrollerar jag f\u00f6rst tabellinst\u00e4llningarna f\u00f6r att se om ROW_FORMAT \u00e4r kompatibelt. Under k\u00f6rningen h\u00e5ller jag koll p\u00e5 nyckeltal som Threads_running och I\/O. Efter \u00e4ndringen verifierar jag de fr\u00e5gor som omedelbart anv\u00e4nder den nya kolumnen <strong>utnyttja<\/strong>.<\/p>\n\n<h2>S\u00e4kra migreringsm\u00f6nster med backfill och index<\/h2>\n\n<p>I produktiva milj\u00f6er arbetar jag med <strong>tv\u00e5stegs<\/strong> \u00c4ndringar. Steg 1: L\u00e4gg till kolumnen \u201dinstant\u201d, till att b\u00f6rja med <code>NULL<\/code>-kompatibel och med ett tydligt standardv\u00e4rde. Steg 2: Uppdatera applikationen via en funktionsflagga s\u00e5 att nya skrivoperationer redan fyller kolumnen, medan befintliga poster fortfarande \u00e4r tomma. Den <strong>\u00c5terfyllning<\/strong> k\u00f6r jag asynkront i sm\u00e5 batcher, t.ex. via en worker som anv\u00e4nder <code>UPDATE ... WHERE new_col \u00c4R NULL ORDER BY pk LIMIT N<\/code> upprepar och l\u00e4gger in pauser mellan k\u00f6rningarna. P\u00e5 s\u00e5 s\u00e4tt f\u00f6rblir belastningen hanterbar.<\/p>\n\n<p>Om jag beh\u00f6ver ett sekund\u00e4rindex p\u00e5 den nya kolumnen kopplar jag bort det fr\u00e5n kolumntill\u00e4gget. Indexbyggandet \u00e4r oftast <strong>INPLACE<\/strong>, men tar proportionellt lika l\u00e5ng tid som datam\u00e4ngden. Genom att separera processerna f\u00f6rhindrar jag att den snabba schemab\u00e4ndringen misslyckas p\u00e5 grund av l\u00e5nga indexeringar. F\u00f6rst n\u00e4r backfillen \u00e4r klar kan jag, om jag vill, k\u00f6ra en <code>NOT NULL<\/code>-Steg f\u00f6r steg \u2013 men endast om algoritmen till\u00e5ter detta utan ombyggnad. Vid \u00e5terst\u00e4llningar r\u00e4cker det ofta att \u00e5terst\u00e4lla funktionsflaggan och l\u00e5ta kolumnen ligga oanv\u00e4nd tills en ordentlig avveckling har planerats.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/09\/mariadb-schema-change-downtime-f5b7.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Prestanda och replikering<\/h2>\n\n<p>Instant-operationer minskar den arbetsinsats som replikaterna m\u00e5ste hantera, eftersom inga omfattande kopieringsprocesser \u00e4ger rum. Detta minskar risken f\u00f6r m\u00e4rkbar f\u00f6rdr\u00f6jning och avlastar parallellt k\u00f6rda <strong>Fr\u00e5gor<\/strong>. I milj\u00f6er med flera platser eller kaskadkonfigurationer spelar detta en avg\u00f6rande roll f\u00f6r RTO\/RPO-m\u00e5len. Den som har l\u00e4mpliga <a href=\"https:\/\/webhosting.de\/sv\/databasreplikering-topologier-webbhotell-klusterkonfiguration-skalning-databas\/\">Replikeringstopologier<\/a> kan \u00f6verf\u00f6ra \u00e4ndringar p\u00e5 ett m\u00e5linriktat s\u00e4tt och strukturera \u00e5terst\u00e4llningar tydligt. P\u00e5 s\u00e5 s\u00e4tt fungerar systemet \u00e4ven vid trafiktoppar <strong>lyh\u00f6rd<\/strong>.<\/p>\n\n<p>Jag tar dock h\u00e4nsyn till binlog-format och h\u00e4ndelsestorlekar f\u00f6r att undvika bieffekter. Vid mycket h\u00f6g skrivbelastning kontrollerar jag slavstatus och SQL-tr\u00e5dens latens under \u00e4ndringen. Den som beh\u00f6ver granskning kan markera DDL-\u00e4ndringen i loggtaggningen. Efterf\u00f6ljande ETL-jobb b\u00f6r k\u00e4nna till den nya kolumnen i god tid, s\u00e5 att inga nattk\u00f6rningar g\u00e5r till spillo. Denna samordning skapar tillf\u00f6rlitliga <strong>Processer<\/strong>.<\/p>\n\n<h2>Galera\/Cluster-s\u00e4rdrag vid Instant-DDL<\/h2>\n\n<p>I kluster med synkron replikering (t.ex. Galera) fungerar DDL-operationer ofta som <strong>TOI<\/strong>-h\u00e4ndelse (Total Order Isolation). INSTANT f\u00f6rkortar den globala samordningen som kr\u00e4vs f\u00f6r detta avsev\u00e4rt, men en kort paus som omfattar hela klustret kan \u00e4nd\u00e5 uppst\u00e5. Jag planerar d\u00e4rf\u00f6r fortfarande s\u00e5dana \u00e4ndringar noggrant, h\u00e5ller sessionerna korta och undviker samtidiga, l\u00e5ngvariga transaktioner som <strong>MDL<\/strong>-kan f\u00f6rl\u00e4nga avst\u00e4ngningarna. Jag anv\u00e4nder RSU-strategier (Rolling Schema Upgrade) endast i specifika fall n\u00e4r det \u00e4r tekniskt n\u00f6dv\u00e4ndigt \u2013 den operativa overheadkostnaden \u00e4r oftast st\u00f6rre \u00e4n nyttan.<\/p>\n\n<p>S\u00e4rskilt viktigt: Lanseringar av scheman och applikationer <strong>orkestrera<\/strong> Jag ser till att alla noder har en konsekvent bild av l\u00e4get innan belastningstoppar intr\u00e4ffar. Jag f\u00f6rebygger h\u00e4lsokontroller och beredskapstester genom korta underh\u00e5llsf\u00f6nster och tydliga avbrottskriterier. P\u00e5 s\u00e5 s\u00e4tt f\u00f6rblir <strong>Tillg\u00e4nglighet<\/strong> h\u00f6g, trots global DDL-serialisering.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/09\/MariaDB_Schemaaenderungen1234.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Planering av webbhotellkonfigurationer<\/h2>\n\n<p>I hanterade milj\u00f6er eller klustermilj\u00f6er kommer Instant-DDL verkligen till sin r\u00e4tt, eftersom jag inte l\u00e4ngre beh\u00f6ver anpassa drifts\u00e4ttningarna till l\u00e5nga underh\u00e5llsf\u00f6nster. S\u00e4rskilt n\u00e4r det g\u00e4ller SSD-lagring och h\u00f6g parallellitet minskar jag belastningen p\u00e5 I\/O och <strong>Cache<\/strong>. Jag samordnar \u00e4ndringarna med applikationsdistributionerna s\u00e5 att funktionsflaggor och scheman aktiveras i r\u00e4tt ordning. \u00d6vervakningen f\u00f6rblir aktiv, men ingripanden beh\u00f6vs s\u00e4llan. Resultatet blir tydligare planer och mindre operativt arbete <strong>Risker<\/strong>.<\/p>\n\n<p>Jag tar dessutom h\u00e4nsyn till s\u00e4kerhetskopieringstidpunkter och p\u00e5g\u00e5ende batchjobb, s\u00e5 att \u00e4ndringen inte hamnar mitt i stora rapporter. I multitenant-scenarier samordnar jag om vissa databaser ska hanteras f\u00f6rst och andra d\u00e4refter. Genom att s\u00e4kerst\u00e4lla enhetlighet i konfigurationer som ROW_FORMAT garanterar jag konsistens. P\u00e5 s\u00e5 s\u00e4tt undviker jag \u00f6verraskningar om ytterligare kolumner beh\u00f6vs senare. Planering ger h\u00e4r m\u00e4rkbara tidsbesparingar <strong>Utgifter<\/strong>.<\/p>\n\n<h2>Praktiska exempel fr\u00e5n projekt<\/h2>\n\n<p>En butik beh\u00f6ver ett f\u00e4lt f\u00f6r kundsegment p\u00e5 kort varsel f\u00f6r en kampanj; jag l\u00e4gger till kolumnen med INSTANT och marknadsf\u00f6ringsavdelningen kan fylla i den direkt. En loggtabell registrerar nya tekniska parametrar; jag l\u00e4gger till kolumnen under dagen, medan hundratals skrivoperationer per sekund forts\u00e4tter och applikationen <strong>svar<\/strong>. I ett rapporteringssystem l\u00e4gger jag till ytterligare KPI-f\u00e4lt utan att det p\u00e5verkar dagsavsluten. \u00c4ven regelverkskrav kan implementeras snabbare om revisionsf\u00e4lt l\u00e4ggs till utan att systemet beh\u00f6ver byggas om. Dessa sm\u00e5 \u00e5tg\u00e4rder ger snabba <strong>Resultat<\/strong>.<\/p>\n\n<p>I samtliga fall granskar jag d\u00e4refter statistiken och l\u00e4ser igenom utvalda exempel. Jag kontrollerar om ORM:er eller migreringsverktyg omedelbart tar h\u00e4nsyn till kolumnen. Cacheminnen och migreringsskript m\u00e5ste k\u00e4nna till den nya strukturen f\u00f6r att undvika felaktiga tolkningar. F\u00f6r st\u00f6rre team dokumenterar jag \u00e4ndringen i en runbook. P\u00e5 s\u00e5 s\u00e4tt f\u00f6rblir historiken och beslutsgrunden tydliga. <strong>begriplig<\/strong>.<\/p>\n\n<h2>Fels\u00f6kning n\u00e4r det inte fungerar direkt<\/h2>\n\n<p>Om en f\u00f6r\u00e4ndring st\u00f6ter emot <code>ALGORITM=INSTANT<\/code> b\u00f6rjar jag med att s\u00f6ka efter inkompatibla format som <code>ROW_FORMAT=COMPRESSED<\/code> eller efter specialindex. D\u00e4refter tittar jag p\u00e5 versionsinformationen: I 10.3 tvingar kolumnpositionen fram <strong>Slut<\/strong>, fr\u00e5n och med den 10 april blir det mer flexibelt. Om databasen ger ett fallback till INPLACE eller COPY avbryter jag processen och anpassar strategin eller schemat. F\u00f6ljande \u00e4r betydelsefulla: <code>VISA VARNINGAR<\/code> och <code>VISNING AV CREATE TABLE<\/code> f\u00f6r layoutindikatorer. F\u00f6rst n\u00e4r testfallet fungerar direkt planerar jag drifts\u00e4ttningen <strong>Verkst\u00e4llighet<\/strong>.<\/p>\n\n<p>Jag t\u00e4nker ocks\u00e5 p\u00e5 perioder med h\u00f6g transaktionsbelastning: \u00c4ven korta metadatasp\u00e4rrar kan orsaka st\u00f6rningar i flaskhalsar om applikationerna uppvisar ogynnsamma m\u00f6nster. Genom att planera mer noggrant och v\u00e4lja ett lugnare tidsf\u00f6nster kan jag d\u00e4mpa effekterna. Dessutom kontrollerar jag om triggar, virtuella kolumner eller fr\u00e4mmande nycklar ger upphov till bieffekter. Noggranna kontroller i f\u00f6rv\u00e4g sparar mycket tid om en incident skulle intr\u00e4ffa. Mitt m\u00e5l \u00e4r fortfarande att \u00e4ndringen ska vara kort, reversibel och <strong>Transparent<\/strong> att h\u00e5lla.<\/p>\n\n<h2>\u00d6vervakning och fels\u00f6kning under drift<\/h2>\n\n<p>Under inf\u00f6randet observerar jag specifikt <strong>MDL<\/strong>-V\u00e4ntetider och I\/O. <code>INFORMATION_SCHEMA.PROCESSLIST<\/code> och <code>INFORMATION_SCHEMA.METADATA_LOCKS<\/code> visar mig om sessioner v\u00e4ntar p\u00e5 DDL. Dessutom anv\u00e4nder jag <strong>performance_schema<\/strong>-h\u00e4ndelser f\u00f6r att korrelera korta avbrott. P\u00e5 replikaterna kontrollerar jag SQL-tr\u00e5dens latens och Seconds_Behind_Master s\u00e5 att jag vid behov kan begr\u00e4nsa backfills eller app-distributioner. Binloggen v\u00e4xer endast minimalt med INSTANT; avvikelser tyder p\u00e5 dolda efterf\u00f6ljande steg (t.ex. indexbyggnad).<\/p>\n\n<p>Efter \u00e4ndringen validerar jag med <code>F\u00d6RKLARA<\/code> och provavl\u00e4sningar, s\u00e5 att fr\u00e5gorna korrekt identifierar nya kolumner. I instrumentpanelerna observerar jag <strong>Tr\u00e5dar_l\u00f6pande<\/strong>, handlarr\u00e4knare och buffertpoolens tr\u00e4fffrekvens, f\u00f6r att uppt\u00e4cka biverkningar. Om det trots <code>LOCK=INGEN<\/code> Om blockeringar uppst\u00e5r beror det oftast p\u00e5 en konkurrerande DDL- eller DML-hotspot. D\u00e5 hj\u00e4lper det med ett kort underh\u00e5llsf\u00f6nster eller att boka om till en lugnare period. Jag avbryter medvetet fel ist\u00e4llet f\u00f6r att hamna i oklara fallback-scenarier \u2013 det sparar tidskr\u00e4vande ombyggnader.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/09\/entwicklerdesk_mariadb_1234.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>J\u00e4mf\u00f6relse av DDL-algoritmerna<\/h2>\n\n<p>F\u00f6ljande \u00f6versikt klassificerar COPY, INPLACE och INSTANT och hj\u00e4lper mig att g\u00f6ra en realistisk bed\u00f6mning av risker och varaktighet. Jag utv\u00e4rderar dessutom i vilken utstr\u00e4ckning samtidig \u00e5tkomst p\u00e5verkas och vilka l\u00e5sningar som kan uppst\u00e5. F\u00f6r en djupare f\u00f6rst\u00e5else av l\u00e5sningar \u00e4r det v\u00e4rt att ta en titt p\u00e5 <a href=\"https:\/\/webhosting.de\/sv\/databasradlasning-mysql-samtidighetshantering-optimera-prestanda-las\/\">Radl\u00e5sning<\/a> och hur det p\u00e5verkar parallelliteten. P\u00e5 s\u00e5 s\u00e4tt undviker jag felbeslut n\u00e4r det g\u00e4ller produktionskritiska <strong>tabeller<\/strong>. Tabellen \u00e4r medvetet f\u00f6rkortad och fungerar som en snabb <strong>J\u00e4mf\u00f6relse<\/strong>.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Algoritm<\/th>\n      <th>L\u00e5s<\/th>\n      <th>Datakopia<\/th>\n      <th>Varaktighet (stora tabeller)<\/th>\n      <th>Typisk anv\u00e4ndning<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>KOPIA<\/td>\n      <td>starkare <strong>L\u00e5s<\/strong><\/td>\n      <td>komplett<\/td>\n      <td>l\u00e5ng (upp till flera timmar)<\/td>\n      <td>inkompatibla \u00e4ndringar, formatbyte<\/td>\n    <\/tr>\n    <tr>\n      <td>INPLACE<\/td>\n      <td>m\u00e5ttlig <strong>L\u00e5s<\/strong><\/td>\n      <td>delvis\/med stor andel metadata<\/td>\n      <td>medell\u00e5ng (fr\u00e5n n\u00e5gra minuter och upp\u00e5t)<\/td>\n      <td>m\u00e5nga \u00e4ndringar online utan att beh\u00f6va bygga om allt fr\u00e5n grunden<\/td>\n    <\/tr>\n    <tr>\n      <td>INSTANT<\/td>\n      <td>kort <strong>MDL<\/strong>-faser<\/td>\n      <td>nej (endast metadata)<\/td>\n      <td>mycket kort (ms till s)<\/td>\n      <td>ADD\/DROP COLUMN, positionsbyte (fr\u00e5n och med 10.4)<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<p>Jag tolkar tabellen som ett beslutstr\u00e4d: Om INSTANT \u00e4r m\u00f6jligt genomf\u00f6r jag det; om inte, pr\u00f6var jag INPLACE; f\u00f6rst om b\u00e5da misslyckas accepterar jag COPY. Kombinationen av LOCK-strategi och algoritm m\u00e5ste passa trafikm\u00f6nstret. S\u00e4rskilt n\u00e4r det g\u00e4ller applikationer med h\u00f6g skrivbelastning s\u00e4kerst\u00e4ller jag en reservl\u00f6sning i f\u00f6rv\u00e4g. P\u00e5 s\u00e5 s\u00e4tt fungerar drifts\u00e4ttningarna \u00e4ven under h\u00f6g belastning <strong>kontrollerbar<\/strong>. Om jag till\u00e4mpar det konsekvent sparar jag mycket <strong>Tid<\/strong>.<\/p>\n\n<h2>Applikationskompatibilitet och ORM:er<\/h2>\n\n<p>Schema\u00e4ndringar \u00e4r endast \u201eosynliga\u201c om applikationskoden klarar av dem. <strong>V\u00c4LJ *<\/strong> och ordinala positionsreferenser utg\u00f6r riskfaktorer s\u00e5 snart jag omordnar kolumner (fr\u00e5n och med version 10.4) eller infogar nya f\u00e4lt. Jag f\u00f6redrar d\u00e4rf\u00f6r explicita kolumnlistor, kontrollerade mappningar och versionshantering av DTO:er. ORM:er och migreringsverktyg cachelagrar ofta metadata; en \u201ewarm restart\u201c eller ett \u201dreprepare\u201d f\u00f6r f\u00f6rberedda satser f\u00f6rhindrar feltolkningar. I mikrotj\u00e4nstmilj\u00f6er koordinerar jag releaser s\u00e5 att endast kompatibla versioner hanterar trafik samtidigt.<\/p>\n\n<p>N\u00e4r det g\u00e4ller bak\u00e5tkompatibilitet g\u00e4ller f\u00f6ljande: L\u00e4gg f\u00f6rst till kolumnen, rulla sedan ut koden som anv\u00e4nder den (om s\u00e5 \u00f6nskas); f\u00f6rst n\u00e4r alla instanser har uppdaterats och backfillen \u00e4r klar sk\u00e4rper jag begr\u00e4nsningarna. P\u00e5 s\u00e5 s\u00e4tt g\u00e5r upp- och nedrullningar snabbt och systemet f\u00f6rblir robust. Vid granskningar dokumenterar jag motivering, SQL-sats, tidpunkt, framg\u00e5ngskriterier och \u00e5terg\u00e5ngsv\u00e4g \u2013 detta skapar f\u00f6rtroende och \u00e5terupprepbarhet <strong>Processer<\/strong>.<\/p>\n\n<h2>Skalning: Partitionering och Instant-DDL<\/h2>\n\n<p>Partitionering och INSTANT kompletterar varandra utm\u00e4rkt, eftersom mindre fysiska enheter g\u00f6r uppdateringar \u00e4nnu mer f\u00f6ruts\u00e4gbara. N\u00e4r jag delar upp tabeller logiskt begr\u00e4nsar jag hotspots och underl\u00e4ttar senare ombyggnader. Bra <a href=\"https:\/\/webhosting.de\/sv\/strategier-foer-partitionering-av-databaser-foer-skalbara-databaser\/\">Partitioneringsstrategier<\/a> hj\u00e4lpa till att h\u00e5lla mycket stora datam\u00e4ngder hanterbara p\u00e5 l\u00e5ng sikt. Sammantaget uppn\u00e5r jag l\u00e4gre latenser, tydligare underh\u00e5llsf\u00f6nster och mindre risk vid <strong>F\u00f6r\u00e4ndringar<\/strong>. Den nya kolumnen blir d\u00e5 snabbare tillg\u00e4nglig p\u00e5 alla relevanta partitioner.<\/p>\n\n<p>Jag planerar arbetsordningen: f\u00f6rst ett utkast till partitioneringen, sedan DDL:er, d\u00e4refter backfills f\u00f6r valfria v\u00e4rden. P\u00e5 s\u00e5 s\u00e4tt undviker jag konflikter som kan uppst\u00e5 vid samtidiga justeringar av index eller lagring. \u00c4ven h\u00e4r \u00e4r testning mitt starkaste verktyg. Med tydliga m\u00e4tv\u00e4rden kan jag avg\u00f6ra om steget \u00e4r genomf\u00f6rbart p\u00e5 produktionssystemen. Denna disciplinerade metod sparar besv\u00e4r och h\u00e5ller teamet <strong>koncentrerad<\/strong>.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/09\/mariadb-schemawechsel-1832.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>\u00c5terst\u00e4llning efter systemkrasch, s\u00e4kerhetskopior och konsistens<\/h2>\n\n<p>INSTANT-DDL \u00e4ndrar endast <strong>Katalog och metadata<\/strong>. Detta g\u00f6r operationen snabb \u2013 och atom\u00e4r. Antingen \u00e4r kolumnen synlig efter en krasch eller s\u00e5 \u00e4r den inte det alls; det uppst\u00e5r inget \u201ehalvf\u00e4rdigt tillst\u00e5nd\u201c. Belastningen p\u00e5 redo\/undo-loggen f\u00f6rblir minimal, eftersom inga datasidor flyttas. F\u00f6r replikering g\u00e4ller: DDL-h\u00e4ndelsen vidarebefordras korrekt; replikaterna beh\u00f6ver inte kopiera n\u00e5gra rader. Fysiska s\u00e4kerhetskopior som k\u00f6rs under \u00e4ndringen b\u00f6r f\u00e5nga upp den korta metadatf\u00f6r\u00e4ndringen vid \u00f6gonblicksbildstidpunkten \u2013 verktyg med konsekvent checkpointing klarar detta. Logiska s\u00e4kerhetskopior inkluderar kolumnen omedelbart i <code>CREATE TABLE<\/code>-instruktioner, \u00e4ven om m\u00e5nga rader fortfarande inneh\u00e5ller <strong>Standard<\/strong> b\u00e4ra.<\/p>\n\n<p>Det g\u00e5r att g\u00f6ra flera p\u00e5 varandra f\u00f6ljande omedelbara \u00e4ndringar. Jag ser dock till att inte byta positioner eller ta bort och \u00e5teruppr\u00e4tta kolumner hur ofta som helst. Frekventa struktur\u00e4ndringar \u00f6kar koordineringsarbetet och kan i vissa fall leda till att det s\u00e5 sm\u00e5ningom blir meningsfullt att bygga om allt fr\u00e5n grunden (t.ex. vid n\u00f6dv\u00e4ndiga formatbyten). Med ett pragmatiskt \u00e4ndringsf\u00f6nster och en tydlig roadmap h\u00e5ller jag den tekniska skulden under kontroll.<\/p>\n\n<h2>Kortfattat sammanfattat<\/h2>\n\n<p>Med Instant ADD COLUMN kan jag g\u00f6ra schemab\u00e4ndringar i stora tabeller i realtid genom att endast \u00e4ndra metadata och l\u00e4mna datablocken of\u00f6r\u00e4ndrade. R\u00e4tt version, ett kompatibelt ROW_FORMAT och tydliga DDL-alternativ som <code>ALGORITM=INSTANT<\/code> och <code>LOCK=INGEN<\/code> avg\u00f6r om det blir framg\u00e5ng eller en omstart. F\u00f6r drift och replikering inneb\u00e4r detta mindre f\u00f6rdr\u00f6jning, planerbara drifts\u00e4ttningar och h\u00f6g <strong>Tillg\u00e4nglighet<\/strong>. Jag anv\u00e4nder tester, \u00f6vervakning och tydlig dokumentation f\u00f6r att undvika \u00f6verraskningar. P\u00e5 s\u00e5 s\u00e4tt f\u00f6rblir min databas flexibel, och jag kan inf\u00f6ra nya krav utan avbrott i <strong>Live drift<\/strong> fr\u00e5n.<\/p>","protected":false},"excerpt":{"rendered":"<p>Uppt\u00e4ck hur MariaDB Instant ADD COLUMN, tack vare INSTANT-algoritmen, m\u00f6jligg\u00f6r schemab\u00e4ndringar utan driftstopp och revolutionerar mariadb online DDL inom databasadministration.<\/p>","protected":false},"author":1,"featured_media":21224,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[781],"tags":[],"class_list":["post-21231","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-datenbanken-administration-anleitungen"],"acf":[],"_wp_attached_file":null,"_wp_attachment_metadata":null,"litespeed-optimize-size":null,"litespeed-optimize-set":null,"_elementor_source_image_hash":null,"_wp_attachment_image_alt":null,"stockpack_author_name":null,"stockpack_author_url":null,"stockpack_provider":null,"stockpack_image_url":null,"stockpack_license":null,"stockpack_license_url":null,"stockpack_modification":null,"color":null,"original_id":null,"original_url":null,"original_link":null,"unsplash_location":null,"unsplash_sponsor":null,"unsplash_exif":null,"unsplash_attachment_metadata":null,"_elementor_is_screenshot":null,"surfer_file_name":null,"surfer_file_original_url":null,"envato_tk_source_kit":null,"envato_tk_source_index":null,"envato_tk_manifest":null,"envato_tk_folder_name":null,"envato_tk_builder":null,"envato_elements_download_event":null,"_menu_item_type":null,"_menu_item_menu_item_parent":null,"_menu_item_object_id":null,"_menu_item_object":null,"_menu_item_target":null,"_menu_item_classes":null,"_menu_item_xfn":null,"_menu_item_url":null,"_trp_menu_languages":null,"rank_math_primary_category":null,"rank_math_title":null,"inline_featured_image":null,"_yoast_wpseo_primary_category":null,"rank_math_schema_blogposting":null,"rank_math_schema_videoobject":null,"_oembed_049c719bc4a9f89deaead66a7da9fddc":null,"_oembed_time_049c719bc4a9f89deaead66a7da9fddc":null,"_yoast_wpseo_focuskw":null,"_yoast_wpseo_linkdex":null,"_oembed_27e3473bf8bec795fbeb3a9d38489348":null,"_oembed_c3b0f6959478faf92a1f343d8f96b19e":null,"_trp_translated_slug_en_us":null,"_wp_desired_post_slug":null,"_yoast_wpseo_title":null,"tldname":null,"tldpreis":null,"tldrubrik":null,"tldpolicylink":null,"tldsize":null,"tldregistrierungsdauer":null,"tldtransfer":null,"tldwhoisprivacy":null,"tldregistrarchange":null,"tldregistrantchange":null,"tldwhoisupdate":null,"tldnameserverupdate":null,"tlddeletesofort":null,"tlddeleteexpire":null,"tldumlaute":null,"tldrestore":null,"tldsubcategory":null,"tldbildname":null,"tldbildurl":null,"tldclean":null,"tldcategory":null,"tldpolicy":null,"tldbesonderheiten":null,"tld_bedeutung":null,"_oembed_d167040d816d8f94c072940c8009f5f8":null,"_oembed_b0a0fa59ef14f8870da2c63f2027d064":null,"_oembed_4792fa4dfb2a8f09ab950a73b7f313ba":null,"_oembed_33ceb1fe54a8ab775d9410abf699878d":null,"_oembed_fd7014d14d919b45ec004937c0db9335":null,"_oembed_21a029d076783ec3e8042698c351bd7e":null,"_oembed_be5ea8a0c7b18e658f08cc571a909452":null,"_oembed_a9ca7a298b19f9b48ec5914e010294d2":null,"_oembed_f8db6b27d08a2bb1f920e7647808899a":null,"_oembed_168ebde5096e77d8a89326519af9e022":null,"_oembed_cdb76f1b345b42743edfe25481b6f98f":null,"_oembed_87b0613611ae54e86e8864265404b0a1":null,"_oembed_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_oembed_time_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_tldname":null,"_tldclean":null,"_tldpreis":null,"_tldcategory":null,"_tldsubcategory":null,"_tldpolicy":null,"_tldpolicylink":null,"_tldsize":null,"_tldregistrierungsdauer":null,"_tldtransfer":null,"_tldwhoisprivacy":null,"_tldregistrarchange":null,"_tldregistrantchange":null,"_tldwhoisupdate":null,"_tldnameserverupdate":null,"_tlddeletesofort":null,"_tlddeleteexpire":null,"_tldumlaute":null,"_tldrestore":null,"_tldbildname":null,"_tldbildurl":null,"_tld_bedeutung":null,"_tldbesonderheiten":null,"_oembed_ad96e4112edb9f8ffa35731d4098bc6b":null,"_oembed_8357e2b8a2575c74ed5978f262a10126":null,"_oembed_3d5fea5103dd0d22ec5d6a33eff7f863":null,"_eael_widget_elements":null,"_oembed_0d8a206f09633e3d62b95a15a4dd0487":null,"_oembed_time_0d8a206f09633e3d62b95a15a4dd0487":null,"_aioseo_description":null,"_eb_attr":null,"_eb_data_table":null,"_oembed_819a879e7da16dd629cfd15a97334c8a":null,"_oembed_time_819a879e7da16dd629cfd15a97334c8a":null,"_acf_changed":null,"_wpcode_auto_insert":null,"_edit_last":null,"_edit_lock":null,"_oembed_e7b913c6c84084ed9702cb4feb012ddd":null,"_oembed_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_time_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_03514b67990db061d7c4672de26dc514":null,"_oembed_time_03514b67990db061d7c4672de26dc514":null,"rank_math_news_sitemap_robots":null,"rank_math_robots":null,"_eael_post_view_count":"109","_trp_automatically_translated_slug_ru_ru":null,"_trp_automatically_translated_slug_et":null,"_trp_automatically_translated_slug_lv":null,"_trp_automatically_translated_slug_fr_fr":null,"_trp_automatically_translated_slug_en_us":null,"_wp_old_slug":null,"_trp_automatically_translated_slug_da_dk":null,"_trp_automatically_translated_slug_pl_pl":null,"_trp_automatically_translated_slug_es_es":null,"_trp_automatically_translated_slug_hu_hu":null,"_trp_automatically_translated_slug_fi":null,"_trp_automatically_translated_slug_ja":null,"_trp_automatically_translated_slug_lt_lt":null,"_elementor_edit_mode":null,"_elementor_template_type":null,"_elementor_version":null,"_elementor_pro_version":null,"_wp_page_template":null,"_elementor_page_settings":null,"_elementor_data":null,"_elementor_css":null,"_elementor_conditions":null,"_happyaddons_elements_cache":null,"_oembed_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_time_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_time_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_59808117857ddf57e478a31d79f76e4d":null,"_oembed_time_59808117857ddf57e478a31d79f76e4d":null,"_oembed_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_time_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_81002f7ee3604f645db4ebcfd1912acf":null,"_oembed_time_81002f7ee3604f645db4ebcfd1912acf":null,"_elementor_screenshot":null,"_oembed_7ea3429961cf98fa85da9747683af827":null,"_oembed_time_7ea3429961cf98fa85da9747683af827":null,"_elementor_controls_usage":null,"_elementor_page_assets":[],"_elementor_screenshot_failed":null,"theplus_transient_widgets":null,"_eael_custom_js":null,"_wp_old_date":null,"_trp_automatically_translated_slug_it_it":null,"_trp_automatically_translated_slug_pt_pt":null,"_trp_automatically_translated_slug_zh_cn":null,"_trp_automatically_translated_slug_nl_nl":null,"_trp_automatically_translated_slug_pt_br":null,"_trp_automatically_translated_slug_sv_se":null,"rank_math_analytic_object_id":null,"rank_math_internal_links_processed":"1","_trp_automatically_translated_slug_ro_ro":null,"_trp_automatically_translated_slug_sk_sk":null,"_trp_automatically_translated_slug_bg_bg":null,"_trp_automatically_translated_slug_sl_si":null,"litespeed_vpi_list":null,"litespeed_vpi_list_mobile":null,"rank_math_seo_score":null,"rank_math_contentai_score":null,"ilj_limitincominglinks":null,"ilj_maxincominglinks":null,"ilj_limitoutgoinglinks":null,"ilj_maxoutgoinglinks":null,"ilj_limitlinksperparagraph":null,"ilj_linksperparagraph":null,"ilj_blacklistdefinition":null,"ilj_linkdefinition":null,"_eb_reusable_block_ids":null,"rank_math_focus_keyword":"Instant ADD COLUMN","rank_math_og_content_image":null,"_yoast_wpseo_metadesc":null,"_yoast_wpseo_content_score":null,"_yoast_wpseo_focuskeywords":null,"_yoast_wpseo_keywordsynonyms":null,"_yoast_wpseo_estimated-reading-time-minutes":null,"rank_math_description":null,"surfer_last_post_update":null,"surfer_last_post_update_direction":null,"surfer_keywords":null,"surfer_location":null,"surfer_draft_id":null,"surfer_permalink_hash":null,"surfer_scrape_ready":null,"_thumbnail_id":"21224","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/posts\/21231","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/comments?post=21231"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/posts\/21231\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/media\/21224"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/media?parent=21231"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/categories?post=21231"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/tags?post=21231"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}