adds / removes dbix prefetches where applicable to improve database performance


Project: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/commit/d1a42eac
Tree: 
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/tree/d1a42eac
Diff: 
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/diff/d1a42eac

Branch: refs/heads/master
Commit: d1a42eac900bafb8cc0cf8c89e0962ae34103867
Parents: b733479
Author: Jeremy Mitchell <mitchell...@gmail.com>
Authored: Wed Feb 8 14:05:31 2017 -0700
Committer: Dewayne Richardson <dewr...@apache.org>
Committed: Wed Feb 8 14:31:48 2017 -0700

----------------------------------------------------------------------
 traffic_ops/app/lib/UI/Asn.pm                   | 22 +-------------------
 traffic_ops/app/lib/UI/Cachegroup.pm            |  2 --
 traffic_ops/app/lib/UI/CachegroupParameter.pm   |  2 +-
 traffic_ops/app/lib/UI/ConfigFiles.pm           | 12 +++++------
 traffic_ops/app/lib/UI/DeliveryServiceServer.pm | 10 ++++-----
 traffic_ops/app/lib/UI/Federation.pm            |  4 ++--
 traffic_ops/app/lib/UI/HwInfo.pm                |  2 +-
 traffic_ops/app/lib/UI/Job.pm                   |  6 +++---
 traffic_ops/app/lib/UI/PhysLocation.pm          |  4 ++--
 traffic_ops/app/lib/UI/ProfileParameter.pm      |  2 +-
 traffic_ops/app/lib/UI/Server.pm                |  6 +++---
 traffic_ops/app/lib/UI/SslKeys.pm               |  2 +-
 traffic_ops/app/lib/UI/StaticDnsEntry.pm        |  2 +-
 traffic_ops/app/lib/UI/Steering.pm              |  2 +-
 14 files changed, 28 insertions(+), 50 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d1a42eac/traffic_ops/app/lib/UI/Asn.pm
----------------------------------------------------------------------
diff --git a/traffic_ops/app/lib/UI/Asn.pm b/traffic_ops/app/lib/UI/Asn.pm
index 2b03c9b..c4a7738 100644
--- a/traffic_ops/app/lib/UI/Asn.pm
+++ b/traffic_ops/app/lib/UI/Asn.pm
@@ -162,7 +162,7 @@ sub view {
        &stash_role($self);
        $self->stash( asn_data => {}, cg_data => {} );
 
-       my $rs               = $self->db->resultset('Asn')->search( { id => $id 
} );
+       my $rs               = $self->db->resultset('Asn')->search( { id => $id 
}, { prefetch => [ 'cachegroup' ] } );
        my $data             = $rs->single;
        my $cache_group_name = $data->cachegroup->name;
 
@@ -197,24 +197,4 @@ sub get_asns {
        return \%data;
 }
 
-# Read - get through API
-# sub index {
-#      my $self = shift;
-#      my @data;
-#      my $orderby = "asn";
-#      $orderby = $self->param('orderby') if ( defined $self->param('orderby') 
);
-#      my $rs_data = $self->db->resultset("Asn")->search( undef, { prefetch => 
[ { 'cachegroup' => undef } ], order_by => $orderby } );
-#      while ( my $row = $rs_data->next ) {
-#              push(
-#                      @data, {
-#                              "id"           => $row->id,
-#                              "asn"          => $row->asn,
-#                              "cachegroup"   => $row->cachegroup->name,
-#                              "last_updated" => $row->last_updated,
-#                      }
-#              );
-#      }
-#      $self->render( json => \@data );
-# }
-
 1;

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d1a42eac/traffic_ops/app/lib/UI/Cachegroup.pm
----------------------------------------------------------------------
diff --git a/traffic_ops/app/lib/UI/Cachegroup.pm 
b/traffic_ops/app/lib/UI/Cachegroup.pm
index a3d0974..7662212 100644
--- a/traffic_ops/app/lib/UI/Cachegroup.pm
+++ b/traffic_ops/app/lib/UI/Cachegroup.pm
@@ -98,8 +98,6 @@ sub view {
                secondary_parent_name          => $secondary_parent_name,
        );
 
-       # $self->stash( cg_data => $data );
-
        &stash_role($self);
        $self->stash( fbox_layout => 1, cg_data => $data, selected_type => 
$selected_type );
 

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d1a42eac/traffic_ops/app/lib/UI/CachegroupParameter.pm
----------------------------------------------------------------------
diff --git a/traffic_ops/app/lib/UI/CachegroupParameter.pm 
b/traffic_ops/app/lib/UI/CachegroupParameter.pm
index b85b418..8aec8eb 100644
--- a/traffic_ops/app/lib/UI/CachegroupParameter.pm
+++ b/traffic_ops/app/lib/UI/CachegroupParameter.pm
@@ -24,7 +24,7 @@ sub index {
        my $self = shift;
        my @data;
        my $orderby = $self->param('orderby') || "cachegroup";
-       my $rs_data = $self->db->resultset("CachegroupParameter")->search( 
undef, { order_by => $orderby } );
+       my $rs_data = $self->db->resultset("CachegroupParameter")->search( 
undef, { prefetch => [ 'cachegroup', 'parameter' ], order_by => $orderby } );
        while ( my $row = $rs_data->next ) {
                push(
                        @data, {

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d1a42eac/traffic_ops/app/lib/UI/ConfigFiles.pm
----------------------------------------------------------------------
diff --git a/traffic_ops/app/lib/UI/ConfigFiles.pm 
b/traffic_ops/app/lib/UI/ConfigFiles.pm
index 69498f8..efe9850 100644
--- a/traffic_ops/app/lib/UI/ConfigFiles.pm
+++ b/traffic_ops/app/lib/UI/ConfigFiles.pm
@@ -151,10 +151,10 @@ sub server_data {
        my $server;
 
        if ( $id =~ /^\d+$/ ) {
-               $server = $self->db->resultset('Server')->search( { id => $id } 
)->single;
+               $server = $self->db->resultset('Server')->search( { id => $id 
}, { prefetch => [ 'profile', 'type', 'cachegroup', 'cdn' ] } )->single;
        }
        else {
-               $server = $self->db->resultset('Server')->search( { host_name 
=> $id } )->single;
+               $server = $self->db->resultset('Server')->search( { host_name 
=> $id }, { prefetch => [ 'profile', 'type', 'cachegroup', 'cdn' ] } )->single;
        }
 
        return $server;
@@ -1411,13 +1411,13 @@ sub header_rewrite_dot_config {
        my $ds_xml_id = undef;
        if ( $file =~ /^hdr_rw_mid_(.*)\.config$/ ) {
                $ds_xml_id = $1;
-               my $ds = $self->db->resultset('Deliveryservice')->search( { 
xml_id => $ds_xml_id }, { prefetch => [ 'type', 'profile' ] } )->single();
+               my $ds = $self->db->resultset('Deliveryservice')->search( { 
xml_id => $ds_xml_id } )->single();
                my $actions = $ds->mid_header_rewrite;
                $text .= $actions . "\n";
        }
        elsif ( $file =~ /^hdr_rw_(.*)\.config$/ ) {
                $ds_xml_id = $1;
-               my $ds = $self->db->resultset('Deliveryservice')->search( { 
xml_id => $ds_xml_id }, { prefetch => [ 'type', 'profile' ] } )->single();
+               my $ds = $self->db->resultset('Deliveryservice')->search( { 
xml_id => $ds_xml_id } )->single();
                my $actions = $ds->edge_header_rewrite;
                $text .= $actions . "\n";
        }
@@ -1438,7 +1438,7 @@ sub regex_remap_dot_config {
 
        if ( $file =~ /^regex_remap_(.*)\.config$/ ) {
                my $ds_xml_id = $1;
-               my $ds = $self->db->resultset('Deliveryservice')->search( { 
xml_id => $ds_xml_id }, { prefetch => [ 'type', 'profile' ] } )->single();
+               my $ds = $self->db->resultset('Deliveryservice')->search( { 
xml_id => $ds_xml_id } )->single();
                $text .= $ds->regex_remap . "\n";
        }
 
@@ -1509,7 +1509,7 @@ sub ssl_multicert_dot_config {
        foreach my $ds (@ds_list) {
                my $ds_id        = $ds->id;
                my $xml_id       = $ds->xml_id;
-               my $rs_ds        = 
$self->db->resultset('Deliveryservice')->search( { 'me.id' => $ds_id } );
+               my $rs_ds        = 
$self->db->resultset('Deliveryservice')->search( { 'me.id' => $ds_id }, { 
prefetch => ['type'] } );
                my $data         = $rs_ds->single;
                my $domain_name  = UI::DeliveryService::get_cdn_domain( $self, 
$ds_id );
                my $ds_regexes   = UI::DeliveryService::get_regexp_set( $self, 
$ds_id );

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d1a42eac/traffic_ops/app/lib/UI/DeliveryServiceServer.pm
----------------------------------------------------------------------
diff --git a/traffic_ops/app/lib/UI/DeliveryServiceServer.pm 
b/traffic_ops/app/lib/UI/DeliveryServiceServer.pm
index fefa1f9..b9f85bb 100644
--- a/traffic_ops/app/lib/UI/DeliveryServiceServer.pm
+++ b/traffic_ops/app/lib/UI/DeliveryServiceServer.pm
@@ -28,7 +28,7 @@ sub cpdss_iframe {
        my $srvr_id = $self->param('id');
 
        if ( $mode eq "view" ) {
-               my $server = $self->db->resultset('Server')->search( { 'me.id' 
=> $srvr_id } )->single();
+               my $server = $self->db->resultset('Server')->search( { 'me.id' 
=> $srvr_id }, { prefetch => [ 'cachegroup' ] } )->single();
 
                my @etypeids = &type_ids( $self, 'EDGE%', 'server' );
                my $rs = $self->db->resultset('Server')->search( { type => { 
-in => \@etypeids }, cdn_id => $server->cdn_id }, { prefetch => 'profile', 
order_by => 'host_name' } );
@@ -64,12 +64,12 @@ sub edit {
 
        # Get list of server ids associated with ds
        my $assigned_servers;
-       my $rsas = $self->db->resultset('DeliveryserviceServer')->search( { 
deliveryservice => $id } );
+       my $rsas = $self->db->resultset('DeliveryserviceServer')->search( { 
deliveryservice => $id }, { prefetch => [ 'server' ] } );
        while ( my $row = $rsas->next ) {
                $assigned_servers->{ $row->server->id } = 1;
        }
 
-       my $ds = $self->db->resultset('Deliveryservice')->search( { 'me.id' => 
$id }, { prefetch => 'cdn' } )->single();
+       my $ds = $self->db->resultset('Deliveryservice')->search( { 'me.id' => 
$id } )->single();
        my $valid_profiles;
        my $psas = $self->db->resultset('Server')->search(
                { cdn_id => $ds->cdn_id },
@@ -82,7 +82,7 @@ sub edit {
                $valid_profiles->{$row} = 1;
        }
 
-       $ds = $self->db->resultset('Deliveryservice')->search( { id => $id } 
)->single();
+       $ds = $self->db->resultset('Deliveryservice')->search( { id => $id }, { 
prefetch => [ 'cdn' ] } )->single();
 
        my @types;
        push(@types, &type_ids( $self, 'EDGE%', 'server' ) );
@@ -133,7 +133,7 @@ sub read {
        my $limit   = 10;
        $orderby = $self->param('orderby') if ( defined $self->param('orderby') 
);
        $limit   = $self->param('limit')   if ( defined $self->param('limit') );
-       my $rs_data = $self->db->resultset("DeliveryserviceServer")->search( 
undef, { order_by => $orderby, rows => $limit } );
+       my $rs_data = $self->db->resultset("DeliveryserviceServer")->search( 
undef, { prefetch => [ 'deliveryservice', 'server' ], order_by => $orderby, 
rows => $limit } );
        while ( my $row = $rs_data->next ) {
                push(
                        @data, {

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d1a42eac/traffic_ops/app/lib/UI/Federation.pm
----------------------------------------------------------------------
diff --git a/traffic_ops/app/lib/UI/Federation.pm 
b/traffic_ops/app/lib/UI/Federation.pm
index bb925e3..3485095 100644
--- a/traffic_ops/app/lib/UI/Federation.pm
+++ b/traffic_ops/app/lib/UI/Federation.pm
@@ -77,7 +77,7 @@ sub edit {
 
                my $role_name;
                my $user_id;
-               my $ftusers = $self->db->resultset('FederationTmuser')->search( 
{ federation => $fed_id }, { prefetch => [ 'federation', 'tm_user' ] } );
+               my $ftusers = $self->db->resultset('FederationTmuser')->search( 
{ federation => $fed_id }, { prefetch => [ 'federation', 'tm_user', 'role' ] } 
);
                while ( my $ft = $ftusers->next ) {
                        $user_id   = $ft->tm_user->id;
                        $role_name = $ft->role->name;
@@ -158,7 +158,7 @@ sub group_resolvers {
 
        my $data;
        my $fed_fed_resolvers =
-               $self->db->resultset('FederationFederationResolver')->search( { 
federation => $fed_id }, { prefetch => ['federation_resolver'] } );
+               $self->db->resultset('FederationFederationResolver')->search( { 
federation => $fed_id }, { prefetch => [ { 'federation_resolver' => 'type' } ] 
} );
        my $resolvers;
        while ( my $row = $fed_fed_resolvers->next ) {
                my $fed_resolver    = $row->federation_resolver;

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d1a42eac/traffic_ops/app/lib/UI/HwInfo.pm
----------------------------------------------------------------------
diff --git a/traffic_ops/app/lib/UI/HwInfo.pm b/traffic_ops/app/lib/UI/HwInfo.pm
index 754d24d..9bb7c7b 100644
--- a/traffic_ops/app/lib/UI/HwInfo.pm
+++ b/traffic_ops/app/lib/UI/HwInfo.pm
@@ -26,7 +26,7 @@ sub readhwinfo {
        my $limit   = $self->param('limit')   || 1000;
 
        # get list of servers in one query
-       my $rs_data = $self->db->resultset("Hwinfo")->search( undef, { rows => 
$limit } );
+       my $rs_data = $self->db->resultset("Hwinfo")->search( undef, { prefetch 
=> [ 'serverid' ], rows => $limit } );
 
        while ( my $row = $rs_data->next ) {
                my $id = $row->id;

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d1a42eac/traffic_ops/app/lib/UI/Job.pm
----------------------------------------------------------------------
diff --git a/traffic_ops/app/lib/UI/Job.pm b/traffic_ops/app/lib/UI/Job.pm
index 757cfcd..063d3ce 100644
--- a/traffic_ops/app/lib/UI/Job.pm
+++ b/traffic_ops/app/lib/UI/Job.pm
@@ -356,7 +356,7 @@ sub readresult {
        my $id   = $self->param('id');
        my @data;
 
-       my $rs_data = $self->db->resultset('JobResult')->search( { job => 
$self->param('id') } );
+       my $rs_data = $self->db->resultset('JobResult')->search( { job => 
$self->param('id') }, { prefetch => [ 'job', 'agent' ] } );
        while ( my $row = $rs_data->next ) {
                my %hash = (
                        id           => $row->id,
@@ -432,10 +432,10 @@ sub viewagentjob {
 
        my $rs_data;
        if ( $id eq "all" ) {
-               $rs_data = $self->db->resultset('Job')->search( { status => 1 
}, { order_by => 'me.' . $orderby, } );
+               $rs_data = $self->db->resultset('Job')->search( { status => 1 
}, { prefetch => [ 'agent', 'status', 'job_user' ], order_by => 'me.' . 
$orderby, } );
        }
        else {
-               $rs_data = $self->db->resultset('Job')->search( { agent => $id, 
status => 1 }, { order_by => 'me.' . $orderby, } );
+               $rs_data = $self->db->resultset('Job')->search( { agent => $id, 
status => 1 }, { prefetch => [ 'agent', 'status', 'job_user' ], order_by => 
'me.' . $orderby, } );
        }
 
        while ( my $row = $rs_data->next ) {

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d1a42eac/traffic_ops/app/lib/UI/PhysLocation.pm
----------------------------------------------------------------------
diff --git a/traffic_ops/app/lib/UI/PhysLocation.pm 
b/traffic_ops/app/lib/UI/PhysLocation.pm
index 06f220d..54a643d 100644
--- a/traffic_ops/app/lib/UI/PhysLocation.pm
+++ b/traffic_ops/app/lib/UI/PhysLocation.pm
@@ -62,7 +62,7 @@ sub readphys_location {
 sub readphys_locationtrimmed {
        my $self = shift;
        my @data;
-       my $rs_data = $self->db->resultset("PhysLocation")->search( undef, { 
prefetch => ['region'], order_by => 'me.name' } );
+       my $rs_data = $self->db->resultset("PhysLocation")->search( undef, { 
order_by => 'me.name' } );
        while ( my $row = $rs_data->next ) {
 
                next if $row->short_name eq 'UNDEF';
@@ -79,7 +79,7 @@ sub readphys_locationtrimmed {
 sub readregion {
        my $self = shift;
        my @data;
-       my $rs_data = $self->db->resultset("Region")->search( undef, { prefetch 
=> ['division'], order_by => 'me.name' } );
+       my $rs_data = $self->db->resultset("Region")->search( undef, { order_by 
=> 'me.name' } );
        while ( my $row = $rs_data->next ) {
                push(
                        @data, {

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d1a42eac/traffic_ops/app/lib/UI/ProfileParameter.pm
----------------------------------------------------------------------
diff --git a/traffic_ops/app/lib/UI/ProfileParameter.pm 
b/traffic_ops/app/lib/UI/ProfileParameter.pm
index 6c35cfe..307fd09 100644
--- a/traffic_ops/app/lib/UI/ProfileParameter.pm
+++ b/traffic_ops/app/lib/UI/ProfileParameter.pm
@@ -26,7 +26,7 @@ sub read {
        my $self = shift;
        my @data;
        my $orderby = $self->param('orderby') || "profile";
-       my $rs_data = $self->db->resultset("ProfileParameter")->search( undef, 
{ order_by => $orderby } );
+       my $rs_data = $self->db->resultset("ProfileParameter")->search( undef, 
{ prefetch => [ 'profile', 'parameter' ], order_by => $orderby } );
        while ( my $row = $rs_data->next ) {
                push(
                        @data, {

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d1a42eac/traffic_ops/app/lib/UI/Server.pm
----------------------------------------------------------------------
diff --git a/traffic_ops/app/lib/UI/Server.pm b/traffic_ops/app/lib/UI/Server.pm
index 051ad47..8103903 100644
--- a/traffic_ops/app/lib/UI/Server.pm
+++ b/traffic_ops/app/lib/UI/Server.pm
@@ -895,17 +895,17 @@ sub readupdate {
        my $rs_servers;
        my %parent_pending = ();
        if ( $host_name =~ m/^all$/ ) {
-               $rs_servers = $self->db->resultset("Server")->search(undef);
+               $rs_servers = $self->db->resultset("Server")->search(undef, { 
prefetch => [ 'type', 'cachegroup' ] } );
        }
        else {
                $rs_servers =
-                       $self->db->resultset("Server")->search( { host_name => 
$host_name } );
+                       $self->db->resultset("Server")->search( { host_name => 
$host_name }, { prefetch => [ 'type', 'cachegroup' ] } );
                my $count = $rs_servers->count();
                if ( $count > 0 ) {
                        if ( $rs_servers->single->type->name =~ m/^EDGE/ ) {
                                my $parent_cg =
                                        
$self->db->resultset('Cachegroup')->search( { id => 
$rs_servers->single->cachegroup->id } 
)->get_column('parent_cachegroup_id')->single;
-                               my $rs_parents = 
$self->db->resultset('Server')->search( { cachegroup => $parent_cg } );
+                               my $rs_parents = 
$self->db->resultset('Server')->search( { cachegroup => $parent_cg }, { 
prefetch => [ 'status'] } );
                                while ( my $prow = $rs_parents->next ) {
                                        if (   $prow->upd_pending == 1
                                                && $prow->status->name ne 
"OFFLINE" )

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d1a42eac/traffic_ops/app/lib/UI/SslKeys.pm
----------------------------------------------------------------------
diff --git a/traffic_ops/app/lib/UI/SslKeys.pm 
b/traffic_ops/app/lib/UI/SslKeys.pm
index cb19de2..d583a38 100644
--- a/traffic_ops/app/lib/UI/SslKeys.pm
+++ b/traffic_ops/app/lib/UI/SslKeys.pm
@@ -28,7 +28,7 @@ use MIME::Base64;
 sub add {
        my $self  = shift;
        my $ds_id = $self->param('id');
-       my $rs_ds  = $self->db->resultset('Deliveryservice')->search( { 'me.id' 
=> $ds_id } );
+       my $rs_ds  = $self->db->resultset('Deliveryservice')->search( { 'me.id' 
=> $ds_id }, { prefetch => [ 'cdn', 'type' ] } );
        my $data   = $rs_ds->single;
        my $xml_id = $data->xml_id;
        &stash_role($self);

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d1a42eac/traffic_ops/app/lib/UI/StaticDnsEntry.pm
----------------------------------------------------------------------
diff --git a/traffic_ops/app/lib/UI/StaticDnsEntry.pm 
b/traffic_ops/app/lib/UI/StaticDnsEntry.pm
index 9a2a339..8d45a90 100644
--- a/traffic_ops/app/lib/UI/StaticDnsEntry.pm
+++ b/traffic_ops/app/lib/UI/StaticDnsEntry.pm
@@ -164,7 +164,7 @@ sub read {
        my @data;
        my $orderby = "deliveryservice";
        $orderby = $self->param('orderby') if ( defined $self->param('orderby') 
);
-       my $rs_data = $self->db->resultset("Staticdnsentry")->search( undef, { 
order_by => $orderby } );
+       my $rs_data = $self->db->resultset("Staticdnsentry")->search( undef, { 
prefetch => [ 'deliveryservice', 'type', 'cachegroup' ], order_by => $orderby } 
);
        while ( my $row = $rs_data->next ) {
                push(
                        @data, {

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d1a42eac/traffic_ops/app/lib/UI/Steering.pm
----------------------------------------------------------------------
diff --git a/traffic_ops/app/lib/UI/Steering.pm 
b/traffic_ops/app/lib/UI/Steering.pm
index 8a3cebd..b6ab1ad 100644
--- a/traffic_ops/app/lib/UI/Steering.pm
+++ b/traffic_ops/app/lib/UI/Steering.pm
@@ -64,7 +64,7 @@ sub get_ds_name {
 sub get_deliveryservices {
        my $self = shift;
        my %ds_data;
-       my $rs = $self->db->resultset('Deliveryservice');
+       my $rs = $self->db->resultset('Deliveryservice')->search(undef, { 
prefetch => [ 'type' ] });
        while ( my $row = $rs->next ) {
                if ( $row->type->name =~ m/^HTTP/ ) {
                        $ds_data{ $row->id } = $row->xml_id;

Reply via email to