diff options
author | danielhanrahan <daniel.hanrahan@est.tech> | 2023-08-17 14:58:30 +0100 |
---|---|---|
committer | Daniel Hanrahan <daniel.hanrahan@est.tech> | 2024-01-10 12:44:19 +0000 |
commit | 36b81b27703d298f016180a71c85113d5c90c6b1 (patch) | |
tree | c2661b7f16e8366907e55ec2fd85634c12fbe51e /cps-ri | |
parent | 8e617d64a7725f5fb0f0f31a5c551ff3e1e484de (diff) |
Enable hibernate write batching
- Implement fragment ID sequence generator with allocation size of 100
- Enable write batching for insert and update, with batch size of 100
- Write performance is over 2x faster
Issue-ID: CPS-1795
Signed-off-by: danielhanrahan <daniel.hanrahan@est.tech>
Change-Id: I7ebd0f834abb57c593603e2cd3fafc7e3425ab1e
Diffstat (limited to 'cps-ri')
5 files changed, 75 insertions, 3 deletions
diff --git a/cps-ri/src/main/java/org/onap/cps/spi/entities/FragmentEntity.java b/cps-ri/src/main/java/org/onap/cps/spi/entities/FragmentEntity.java index 12f42f2b7e..c763f61f8f 100755..100644 --- a/cps-ri/src/main/java/org/onap/cps/spi/entities/FragmentEntity.java +++ b/cps-ri/src/main/java/org/onap/cps/spi/entities/FragmentEntity.java @@ -1,6 +1,6 @@ /* * ============LICENSE_START======================================================= - * Copyright (C) 2020-2023 Nordix Foundation. + * Copyright (C) 2020-2024 Nordix Foundation. * Modifications Copyright (C) 2021 Pantheon.tech * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -31,6 +31,7 @@ import jakarta.persistence.Id; import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; import jakarta.persistence.OneToMany; +import jakarta.persistence.SequenceGenerator; import jakarta.persistence.Table; import jakarta.validation.constraints.NotNull; import java.io.Serializable; @@ -63,7 +64,8 @@ public class FragmentEntity implements Serializable { private static final long serialVersionUID = 7737669789097119667L; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) + @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "fragment_id_seq_generator") + @SequenceGenerator(name = "fragment_id_seq_generator", sequenceName = "fragment_id_seq", allocationSize = 100) private Long id; @NotNull diff --git a/cps-ri/src/main/resources/changelog/changelog-master.yaml b/cps-ri/src/main/resources/changelog/changelog-master.yaml index f76c5ba3b9..e10ce633d3 100644 --- a/cps-ri/src/main/resources/changelog/changelog-master.yaml +++ b/cps-ri/src/main/resources/changelog/changelog-master.yaml @@ -1,6 +1,6 @@ # ============LICENSE_START======================================================= # Copyright (c) 2021 Bell Canada. -# Modifications Copyright (C) 2022-2023 Nordix Foundation. +# Modifications Copyright (C) 2022-2024 Nordix Foundation. # ================================================================================ # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -58,3 +58,5 @@ databaseChangeLog: file: changelog/db/changes/20-change-foreign-key-id-types-to-integer.yaml - include: file: changelog/db/changes/21-escape-quotes-in-xpath.yaml + - include: + file: changelog/db/changes/22-fragment-id-sequence.yaml diff --git a/cps-ri/src/main/resources/changelog/db/changes/22-fragment-id-sequence-forward.sql b/cps-ri/src/main/resources/changelog/db/changes/22-fragment-id-sequence-forward.sql new file mode 100644 index 0000000000..7f8d686c72 --- /dev/null +++ b/cps-ri/src/main/resources/changelog/db/changes/22-fragment-id-sequence-forward.sql @@ -0,0 +1,20 @@ +/* + ============LICENSE_START======================================================= + Copyright (C) 2024 Nordix Foundation. + ================================================================================ + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + SPDX-License-Identifier: Apache-2.0 + ============LICENSE_END========================================================= +*/ + +ALTER TABLE fragment ALTER COLUMN id DROP IDENTITY; +CREATE SEQUENCE fragment_id_seq INCREMENT BY 100 START WITH 100; +SELECT setval('fragment_id_seq', (SELECT ((max(id) / 100) + 1) * 100 FROM fragment), TRUE); diff --git a/cps-ri/src/main/resources/changelog/db/changes/22-fragment-id-sequence-rollback.sql b/cps-ri/src/main/resources/changelog/db/changes/22-fragment-id-sequence-rollback.sql new file mode 100644 index 0000000000..88bb8c774a --- /dev/null +++ b/cps-ri/src/main/resources/changelog/db/changes/22-fragment-id-sequence-rollback.sql @@ -0,0 +1,20 @@ +/* + ============LICENSE_START======================================================= + Copyright (C) 2024 Nordix Foundation. + ================================================================================ + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + SPDX-License-Identifier: Apache-2.0 + ============LICENSE_END========================================================= +*/ + +DROP SEQUENCE fragment_id_seq; +ALTER TABLE fragment ALTER id ADD GENERATED BY DEFAULT AS IDENTITY; +SELECT setval('fragment_id_seq', (SELECT max(id) FROM fragment), TRUE); diff --git a/cps-ri/src/main/resources/changelog/db/changes/22-fragment-id-sequence.yaml b/cps-ri/src/main/resources/changelog/db/changes/22-fragment-id-sequence.yaml new file mode 100644 index 0000000000..8bdabb5019 --- /dev/null +++ b/cps-ri/src/main/resources/changelog/db/changes/22-fragment-id-sequence.yaml @@ -0,0 +1,28 @@ +# ============LICENSE_START======================================================= +# Copyright (C) 2024 Nordix Foundation. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# ============LICENSE_END========================================================= + +databaseChangeLog: + - changeSet: + author: cps + id: 21 + changes: + - sqlFile: + path: changelog/db/changes/22-fragment-id-sequence-forward.sql + rollback: + - sqlFile: + path: changelog/db/changes/22-fragment-id-sequence-rollback.sql |