ironic/ironic/tests/unit/db
Julia Kreger c71d529e7e Only return the requested fields from the DB
A node object has many fields, and a huge opportunity
for performance improvement is to reduce the amount of work
performed at the lower layers when it is not necessary.
In particular, the easiest case to identify and handle is
when a list of fields to be fulfilled is explicitly supplied.

This is particularlly noteworthy when we collecting a list of
nodes for synconization with Nova, where only 9 columns are
really needed to supply Nova with the information required,
and thus numerous fields are discarded.

This is all particularlly compounded when traits are used,
which presently uses a joined load pattern from SQL.

With this patch, we explicitly load and convert only the fields
requested at the lowest level, and then perform a different style
of loading node traits which requires less overhead by SQLAlchemy
to de-duplicate the returned result set to the application.

This turns out to be far more efficent as we're reducing the amount
of data/object conversion work by 360%, even before we consider
populating traits, which is performed as a separate query when
traits are requested.

Story: 2008885
Task: 42434
Change-Id: Iac703d2a9b7b240a47477be8a64c7c33e28f692f
2021-07-07 12:18:49 -07:00
..
sqlalchemy Support port name 2020-11-29 13:37:55 +08:00
__init__.py Remove unused import 2016-07-21 09:03:40 +00:00
base.py Remove usage of some of the deprecated methods 2017-07-31 10:14:08 +00:00
test_allocations.py Allocation API: taking over allocations of offline conductors 2019-02-19 17:36:16 +01:00
test_api.py Don't migrate away from iscsi if it is the default 2020-09-30 15:03:59 +01:00
test_bios_settings.py Use assertCountEqual instead of assertItemsEqual 2020-06-11 14:37:56 +02:00
test_chassis.py Stop using six library 2019-12-23 09:38:25 +01:00
test_conductor.py Register all hardware_interfaces together 2021-01-08 15:16:53 +00:00
test_deploy_templates.py Stop using six library 2019-12-23 09:38:25 +01:00
test_node_tags.py Use assertCountEqual instead of assertItemsEqual 2020-06-11 14:37:56 +02:00
test_node_traits.py Use assertCountEqual instead of assertItemsEqual 2020-06-11 14:37:56 +02:00
test_nodes.py Only return the requested fields from the DB 2021-07-07 12:18:49 -07:00
test_portgroups.py Stop using six library 2019-12-23 09:38:25 +01:00
test_ports.py Support port name 2020-11-29 13:37:55 +08:00
test_volume_connectors.py Stop using six library 2019-12-23 09:38:25 +01:00
test_volume_targets.py Stop using six library 2019-12-23 09:38:25 +01:00
utils.py Add Redfish RAID interface to idrac HW type 2021-03-19 12:11:50 -04:00