BIND 10 #324: improve SQL data source performance

BIND 10 Development do-not-reply at isc.org
Thu Feb 16 15:54:52 UTC 2012


#324: improve SQL data source performance
-------------------------------------+-------------------------------------
                   Reporter:  each   |                 Owner:  UnAssigned
                       Type:         |                Status:  assigned
  enhancement                        |             Milestone:  Next-Sprint-
                   Priority:  major  |  Proposed
                  Component:  data   |            Resolution:
  source                             |             Sensitive:  0
                   Keywords:         |           Sub-Project:  DNS
  performance                        |  Estimated Difficulty:  0.0
            Defect Severity:  N/A    |           Total Hours:  0
Feature Depending on Ticket:         |
  sqlite schema upgrade              |
        Add Hours to Ticket:  0      |
                  Internal?:  0      |
-------------------------------------+-------------------------------------
Changes (by shane):

 * milestone:  Year 3 Task Backlog => Next-Sprint-Proposed


Comment:

 Perhaps we could include the relevant bits as part of our performance
 improvement work?

 The schema change is:

 {{{#!patch
 --- a/src/lib/datasrc/sqlite3_datasrc.cc
 +++ b/src/lib/datasrc/sqlite3_datasrc.cc
 @@ -54,9 +54,11 @@ struct Sqlite3Parameters {
  };

  namespace {

 +// SQL statements to create a database file. schema version 2.
  const char* const SCHEMA_LIST[] = {
 +    "BEGIN EXCLUSIVE TRANSACTION",
      "CREATE TABLE schema_version (version INTEGER NOT NULL)",
 -    "INSERT INTO schema_version VALUES (1)",
 +    "INSERT INTO schema_version VALUES (2)",
      "CREATE TABLE zones (id INTEGER PRIMARY KEY, "
      "name STRING NOT NULL COLLATE NOCASE, "
      "rdclass STRING NOT NULL COLLATE NOCASE DEFAULT 'IN', "
 }}}
 {{{#!patch
 --- a/src/lib/datasrc/sqlite3_datasrc.cc
 +++ b/src/lib/datasrc/sqlite3_datasrc.cc
 @@ -67,14 +69,32 @@ const char* const SCHEMA_LIST[] = {
      "rname STRING NOT NULL COLLATE NOCASE, ttl INTEGER NOT NULL, "
      "rdtype STRING NOT NULL COLLATE NOCASE, sigtype STRING COLLATE
 NOCASE, "
      "rdata STRING NOT NULL)",
 -    "CREATE INDEX records_byname ON records (name)",
 -    "CREATE INDEX records_byrname ON records (rname)",
 +    "CREATE INDEX records_byname ON records (zone_id, name, rdtype, "
 +    "sigtype, id, ttl, rdata)",
 +    "CREATE INDEX records_byrname ON records (zone_id, rname, rdtype,
 name)",
      "CREATE TABLE nsec3 (id INTEGER PRIMARY KEY, zone_id INTEGER NOT
 NULL, "
      "hash STRING NOT NULL COLLATE NOCASE, "
      "owner STRING NOT NULL COLLATE NOCASE, "
      "ttl INTEGER NOT NULL, rdtype STRING NOT NULL COLLATE NOCASE, "
      "rdata STRING NOT NULL)",
 -    "CREATE INDEX nsec3_byhash ON nsec3 (hash)",
 +    "CREATE INDEX nsec3_byhash ON nsec3 (zone_id, hash, rdtype, "
 +    "id, ttl, rdata)",
 +    "COMMIT",
 +    NULL
 +};
 }}}

 The important bits the changes to the indexes.

-- 
Ticket URL: <http://bind10.isc.org/ticket/324#comment:4>
BIND 10 Development <http://bind10.isc.org>
BIND 10 Development


More information about the bind10-tickets mailing list