Skip to content

Commit 58916eb

Browse files
Use lateral join (introduced in MySQL 8.0.14) with subquery on user_statistics table in account_view for netstats (#12631)
1 parent 120a436 commit 58916eb

File tree

3 files changed

+13
-35
lines changed

3 files changed

+13
-35
lines changed

engine/schema/src/main/resources/META-INF/db/schema-42200to42210-cleanup.sql

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,5 @@
1818
--;
1919
-- Schema upgrade cleanup from 4.22.0.0 to 4.22.1.0
2020
--;
21+
22+
DROP VIEW IF EXISTS `cloud`.`account_netstats_view`;

engine/schema/src/main/resources/META-INF/db/views/cloud.account_netstats_view.sql

Lines changed: 0 additions & 31 deletions
This file was deleted.

engine/schema/src/main/resources/META-INF/db/views/cloud.account_view.sql

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ select
3939
`data_center`.`id` AS `data_center_id`,
4040
`data_center`.`uuid` AS `data_center_uuid`,
4141
`data_center`.`name` AS `data_center_name`,
42-
`account_netstats_view`.`bytesReceived` AS `bytesReceived`,
43-
`account_netstats_view`.`bytesSent` AS `bytesSent`,
42+
`account_netstats`.`bytesReceived` AS `bytesReceived`,
43+
`account_netstats`.`bytesSent` AS `bytesSent`,
4444
`vmlimit`.`max` AS `vmLimit`,
4545
`vmcount`.`count` AS `vmTotal`,
4646
`runningvm`.`vmcount` AS `runningVms`,
@@ -89,8 +89,15 @@ from
8989
`cloud`.`domain` ON account.domain_id = domain.id
9090
left join
9191
`cloud`.`data_center` ON account.default_zone_id = data_center.id
92-
left join
93-
`cloud`.`account_netstats_view` ON account.id = account_netstats_view.account_id
92+
left join lateral (
93+
select
94+
coalesce(sum(`user_statistics`.`net_bytes_received` + `user_statistics`.`current_bytes_received`), 0) AS `bytesReceived`,
95+
coalesce(sum(`user_statistics`.`net_bytes_sent` + `user_statistics`.`current_bytes_sent`), 0) AS `bytesSent`
96+
from
97+
`cloud`.`user_statistics`
98+
where
99+
`user_statistics`.`account_id` = `account`.`id`
100+
) AS `account_netstats` ON TRUE
94101
left join
95102
`cloud`.`resource_limit` vmlimit ON account.id = vmlimit.account_id
96103
and vmlimit.type = 'user_vm' and vmlimit.tag IS NULL

0 commit comments

Comments
 (0)