]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#2452] Improve postgresl indexes on hosts table
authorThomas Markwalder <tmark@isc.org>
Wed, 20 Jul 2022 15:53:27 +0000 (11:53 -0400)
committerThomas Markwalder <tmark@isc.org>
Fri, 22 Jul 2022 14:13:55 +0000 (10:13 -0400)
src/share/database/scripts/pgsql/dhcpdb_create.pgsql
src/share/database/scripts/pgsql/upgrade_012_to_013.sh.in
    Added host index for dhcp identifier + type only - v4 and v6
    Modified existing host index to include subnet-id = 0 - v4 and v6

src/share/database/scripts/pgsql/dhcpdb_create.pgsql
src/share/database/scripts/pgsql/upgrade_012_to_013.sh.in

index a3d246dfd8f8e944a9d82da3d9616e30a7130c3d..7c1ce318706f6d67b3edb96a9a7db0080a71d48c 100644 (file)
@@ -5604,6 +5604,24 @@ BEGIN
 END;
 $$ LANGUAGE plpgsql;
 
+-- Improve hosts indexes for better performance of global reservations
+-- Create new index that uses only dhcp4_identifier.
+CREATE INDEX key_dhcp4_identifier on hosts (dhcp_identifier, dhcp_identifier_type);
+-- Create new index that uses only dhcp4_identifier.
+CREATE INDEX key_dhcp6_identifier on hosts (dhcp_identifier, dhcp_identifier_type);
+
+-- Modify existing indexes to include subnet_id values of 0, so index is also used
+-- for global reservations.
+DROP INDEX key_dhcp4_identifier_subnet_id;
+CREATE UNIQUE INDEX key_dhcp4_identifier_subnet_id ON hosts
+        (dhcp_identifier ASC, dhcp_identifier_type ASC, dhcp4_subnet_id ASC)
+    WHERE (dhcp4_subnet_id IS NOT NULL);
+
+DROP INDEX key_dhcp6_identifier_subnet_id;
+CREATE UNIQUE INDEX key_dhcp6_identifier_subnet_id ON hosts
+        (dhcp_identifier ASC, dhcp_identifier_type ASC, dhcp6_subnet_id ASC)
+    WHERE (dhcp6_subnet_id IS NOT NULL);
+
 -- Update the schema version number.
 UPDATE schema_version
     SET version = '13', minor = '0';
index 39ce42327d44be61961435f3e8027b4537e96635..020edca5fe4ed2486089bff9f75e87c03175057c 100644 (file)
@@ -653,6 +653,24 @@ BEGIN
 END;
 \$\$ LANGUAGE plpgsql;
 
+-- Improve hosts indexes for better performance of global reservations
+-- Create new index that uses only dhcp4_identifier.
+CREATE INDEX key_dhcp4_identifier on hosts (dhcp_identifier, dhcp_identifier_type);
+-- Create new index that uses only dhcp4_identifier.
+CREATE INDEX key_dhcp6_identifier on hosts (dhcp_identifier, dhcp_identifier_type);
+
+-- Modify existing indexes to include subnet_id values of 0, so index is also used
+-- for global reservations.
+DROP INDEX IF EXISTS key_dhcp4_identifier_subnet_id;
+CREATE UNIQUE INDEX key_dhcp4_identifier_subnet_id ON hosts
+        (dhcp_identifier ASC, dhcp_identifier_type ASC, dhcp4_subnet_id ASC)
+    WHERE (dhcp4_subnet_id IS NOT NULL);
+
+DROP INDEX IF EXISTS key_dhcp6_identifier_subnet_id;
+CREATE UNIQUE INDEX key_dhcp6_identifier_subnet_id ON hosts
+        (dhcp_identifier ASC, dhcp_identifier_type ASC, dhcp6_subnet_id ASC)
+    WHERE (dhcp6_subnet_id IS NOT NULL);
+
 -- Update the schema version number.
 UPDATE schema_version
     SET version = '13', minor = '0';