ODS.VirtFixBrokenQuadStoreIndex

  • Topic
  • Discussion
  • ODS.VirtFixBrokenQuadStoreIndex(Last) -- DAVWikiAdmin? , 2017-06-13 06:09:42 Edit WebDAV System Administrator 2017-06-13 06:09:42

    How to Fix Broken Index on RDF QUAD Store

    What

    There are occasions when one of more of the indexes on the Virtuoso RDF QUAD Store table become corrupted.

    Why

    In such cases it is important to repair these indexes to prevent query failures or incorrect data being returned.

    How

    Check the counts on all the indexes on the RDF_QUAD table by running the following queries:


        select count (*) from rdf_quad table option (index rdf_quad); 
        select count (*) from rdf_quad table option (index rdf_quad_pogs); 
        select count (*) from rdf_quad table option (index rdf_quad_sp); 
        select count (*) from rdf_quad table option (index rdf_quad_gs); 
        select count (*) from rdf_quad table option (index rdf_quad_op);
    

    If the counts differ then there one or more of the indexes is corrupt and need to be repaired.

    Check the primary key on the RDF_QUAD table is not broken by running the command:


    select count (s), count (p ), count (o ), count (g ) from rdf_quad table option (index rdf_quad, check);
    

    The counts of s, p, o, g should all be the same.

    Run a database in integrity check to check the state of the database with the command:


    backup '/dev/null';
    

    Failure of this command to complete is another indication of the database having some form of corruption, requiring a +backup-dump of the database with the command:


    virtuoso-iodbc-t +configfile virtuoso.ini +backup-dump
    

    If the Virtuoso log output of this command indicates a Broken Index as below:


    08:20:27 Database dump started 
    08:20:27 Checkpoint finished, log reused 
    08:20:27 Dumping the schema tables 
    08:20:27 Dumping the registry 
    08:20:27 Dumping the schema done 
    09:03:02 Broken index RDF_QUAD_POGS 
    09:03:02 GPF: colsearch.c:1753 less ces in seg than indicated in leaf col ref 
    GPF: colsearch.c:1753 less ces in seg than indicated in leaf col ref 
    Segmentation fault (core dumped)
    

    Then that index and any others (comma delimited) need to be removed from the +backup-dump by adding them to the BackupIgnoreKeys parameter in the [Parameters] section of the Virtuoso config file (virtuoso.ini):


    [Parameters] 
    BackupIgnoreKeys = RDF_QUAD_POGS
    

    Repeat the +backup-dump which should then complete as which time the database can be restored with the +restore-crash-dump command:


    virtuoso-iodbc-t +configfile virtuoso.ini +restore-crash-dump 
    

    The missing index will then have to be recreated as detailed in the RDF Performance Tuning guide, thus is the case of the RDF_QUAD_POGS index the command would be:


    CREATE COLUMN INDEX RDF_QUAD_POGS 
      ON DB.DBA.RDF_QUAD (P, O, S, G) 
      PARTITION (O varchar (-1, 0hexffff));
    

    Finally rerun the database integrity check above and check the index counts are now all the same, in which case the indexes are repaired and the database is ready for use again.