Pudottavat taulukon sarakkeet

Vertica Analytics Platform Version 9.2.X Documentation

ALTER TABLE…DROP COLUMNpudottaa määrätyn taulukon sarakkeen ja pudotettua saraketta vastaavat Ros-kontit:

 Alter table table drop sarakkeen

kun pudotusoperaatio on valmis, nykyiseltä aikakaudelta varmuuskopioitu data palautuu ilman saraketta. Tiedot talteen varmuuskopio, joka edeltää nykyistä aikakautta uudelleen lisätä taulukon sarake. Koska pudotusoperaatiot poistavat fyysisesti objektien tallennuksen ja luettelomäärittelyt (taulukon historia) taulukosta, AT EPOCH (Historiallinen) kyselyt eivät palauta mitään pudotettuun sarakkeeseen.

muutettu taulukko säilyttää kohdetunnuksensa.

Pudotussarakkeiden operaatiot voivat olla nopeita, koska nämä luettelotason muutokset eivät vaadi tietojen uudelleenorganisointia, joten Vertica voi nopeasti ottaa levytallennuksen takaisin.

rajoitukset

  • ensisijaista avainsaraketta tai taulukon osiointilausekkeeseen osallistuvaa saraketta ei voi pudottaa tai muuttaa.
  • ei voi pudottaa minkään projektion lajittelujärjestyksen ensimmäistä saraketta, eikä sarakkeita, jotka osallistuvat projektion segmentointilausekkeeseen.
  • kaikkien solmujen on oltava ylhäällä.
  • et voi pudottaa pääsykäytäntöön liittyvää saraketta. Yritykset tehdä niin tuottavat seuraavan virheen:
    ERROR 6482: Failed to parse Access Policies for table "t1"

käyttämällä kaskadia pakottamaan pudotus

Jos pudotettavassa taulukon sarakkeessa on riippuvuuksia, tulee DROP COLUMN lauseke saada CASCADE vaihtoehto. Esimerkiksi kohdesarake saatetaan määritellä projektio-lajittelujärjestyksessä. Tässä ja muissa tapauksissa DROP COLUMN…CASCADE hoitaa riippuvuuden järjestelemällä luettelomäärittelyjä uudelleen tai pudottamalla projektiota. Kaikissa tapauksissa CASCADE suorittaa sarakkeen pudottamiseen tarvittavan minimaalisen uudelleenjärjestelyn.

käytä CASCADE pudottamaan sarake, jossa on seuraavat riippuvuudet:

pudotettu sarakeriippuvuus KASKADIKÄYTTÄYTYMINEN

mikä tahansa rajoitus

Vertica pudottaa sarakkeen, kun vieraan avaimen rajoitus riippuu viitattuihin sarakkeisiin liittyvästä ainutkertaisesta tai ensisijaisesta avaimen rajoituksesta.

määritelty projektion lajittelujärjestyksessä

Vertica katkaisee projektion lajittelujärjestyksen siihen projektioon saakka, joka pudotetaan ilman vaikutusta muiden sarakkeiden fyysiseen tallennustilaan, ja pudottaa sitten määritellyn sarakkeen. Esimerkiksi jos projektion sarakkeet ovat lajittelujärjestyksessä (a, b, c), sarakkeen B pudottaminen aiheuttaa projektion lajittelujärjestyksen olevan vain (a), jättäen pois sarakkeen (c).

määritelty projektion segmentointilausekkeessa

pudotettava sarake on integraali projektion määritelmään. Jos mahdollista, Vertica pudottaa projektion, kunhan se ei vaaranna K-turvallisuutta; muuten tapahtuma rullaa taaksepäin.

Viitattu toisen sarakkeen oletusarvona

Katso oletusarvoksi Viitatun sarakkeen pudottaminen alla.

oletusarvoksi Viitatun sarakkeen pudottaminen kannattaa pudottaa taulukkosarake, jonka oletusarvoksi on merkitty toinen sarake. Esimerkiksi seuraavassa taulukossa on kaksi saraketta, a ja b:, jossa b saa oletusarvonsa sarakkeesta a:

=> create table x (A int) unsegmented all nodes;create table=> alter Table X add sarakkeen B Int default a;alter table

tässä tapauksessa sarakkeen a edellyttää seuraavaa menettelyä:

  1. Poista oletusriippuvuus ALTER COLUMN..DROP DEFAULT:
    => ALTER TABLE x ALTER sarakkeen B DROP DEFAULT;
  2. luo korvaava superprojektio kohdetaulukolle, jos toinen tai molemmat seuraavista ehdoista pitää paikkansa:
  • kohdesarake on taulukon ensimmäinen järjestyssarake. Jos taulukossa ei ole nimenomaista lajittelujärjestystä, taulukon oletuslajittelujärjestys määrittää ensimmäisen taulukon sarakkeen ensimmäiseksi lajittelujärjestyksen sarakkeeksi. Tällöin uudessa superprojektissa on määrättävä lajittelujärjestys, joka sulkee pois kohdesarakkeen.
  • jos taulukko on segmentoitu, kohdesarake on määritelty segmentointilausekkeessa. Tässä tapauksessa uudessa superhankkeessa on määriteltävä segmentointilauseke, joka sulkee pois kohdesarakkeen.

edellisen esimerkin perusteella taulukossa x on oletusjärjestys (a, b). Koska sarake a on taulukon ensimmäinen järjestyssarake, on luotava korvaava superprojektio, joka lajitellaan sarakkeeseen b:

=> CREATE PROJECTION x_p1 as select * FROM x ORDER BY b UNSEGMENTED ALL NODES;

  • Run START_REFRESH:
    => SELECT START_REFRESH(); START_REFRESH---------------------------------------- Starting refresh background process.(1 row)
  • Run MAKE_AHM_NOW:
    => SELECT MAKE_AHM_NOW(); MAKE_AHM_NOW------------------------------- AHM set (New AHM Epoch: 1231)(1 row)
  • Drop the column:
    => ALTER TABLE x DROP COLUMN a CASCADE;
  • Vertica toteuttaa CASCADE direktiivin seuraavasti:

    • pudottaa taulukon alkuperäisen superprojektion xx_super).
    • päivittää korvaavan superprojektion x_p1 pudottamalla sarakkeen a.

    Examples

    seuraava komentosarja pudottaa onnistuneesti BYTEA-tietotyypin sarakkeen:

    => CREATE TABLE t (x BYTEA (65000), y BYTEA, z BYTEA(1)); CREATE TABLE=> ALTER TABLE t DROP COLUMN y;ALTER TABLE=> SELECT y FROM t;ERROR 2624: Column "y" does not exist=> ALTER TABLE t DROP COLUMN x RESTRICT;ALTER TABLE=> SELECT x FROM t;ERROR 2624: Column "x" does not exist=> SELECT * FROM t; z---(0 rows)=> DROP TABLE t CASCADE;PUDOTUSTAULUKKO

    seuraava komentosarja yrittää pudottaa kelluvan(8) sarakkeen ja epäonnistuu, koska projektioita ei ole tarpeeksi k-turvallisuuden ylläpitämiseksi.

    => CREATE TABLE=> ALTER TABLE t DROP COLUMN y Limited;ALTER TABLE=> SELECT y from t;ERROR 2624: saraketta "y" ei ole olemassa=> alter table t drop X cascade;rollback 2409: ei voi enää pudottaa sarakkeita t=> Drop Table t Cascade;



    Vastaa

    Sähköpostiosoitettasi ei julkaista.