sql >> Databasteknik >  >> RDS >> Oracle

Försöker räkna ut maxlängden på Rowid i Oracle

En fysisk ROWID har en fast storlek i en given Oracle-version, den beror inte på antalet rader i en tabell. Den består av numret på datafilen, numret på blocket i denna fil och numret på raden i detta block. Därför är den unik i hela databasen och ger direkt åtkomst till blocket och raden utan ytterligare uppslag.

Eftersom saker och ting i IT-världen fortsätter att växa, är det säkert att anta att formatet kommer att förändras i framtiden.

Förutom volym finns det också strukturella förändringar, som tillkomsten av transportabla tabellutrymmen, som gjorde det nödvändigt att lagra objektnumret (=bordets/partitionens/underavdelningens interna nummer) inuti ROWID.

Eller tillkomsten av Index organiserade tabeller (nämns av @ibre5041), som ser ut som en tabell, men som i verkligheten bara är ett index utan en sådan fysisk adress (eftersom saker rör sig hela tiden i ett index). Detta gjorde det nödvändigt att införa UROWID som kan lagra fysiska och indexbaserade ROWIDs.

Var medveten om att en ROWID kan ändras, till exempel om raden flyttas från en tabellpartition till en annan, eller om tabellen defragmenteras för att fylla hålen som lämnats av många DELETEs.



  1. subtrahera 1 från talet i rad SQL Query

  2. PDO kastar fel om MYSQL_ATTR_INIT_COMMAND används

  3. ap_proxy_connect_backend inaktiverar arbetare för (127.0.0.1)

  4. MySQL-frågefel med CASE och INNER JOIN