From 36b81b27703d298f016180a71c85113d5c90c6b1 Mon Sep 17 00:00:00 2001 From: danielhanrahan Date: Thu, 17 Aug 2023 14:58:30 +0100 Subject: 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 Change-Id: I7ebd0f834abb57c593603e2cd3fafc7e3425ab1e --- .../org/onap/cps/spi/entities/FragmentEntity.java | 6 +++-- .../main/resources/changelog/changelog-master.yaml | 4 +++- .../db/changes/22-fragment-id-sequence-forward.sql | 20 ++++++++++++++++ .../changes/22-fragment-id-sequence-rollback.sql | 20 ++++++++++++++++ .../db/changes/22-fragment-id-sequence.yaml | 28 ++++++++++++++++++++++ 5 files changed, 75 insertions(+), 3 deletions(-) mode change 100755 => 100644 cps-ri/src/main/java/org/onap/cps/spi/entities/FragmentEntity.java create mode 100644 cps-ri/src/main/resources/changelog/db/changes/22-fragment-id-sequence-forward.sql create mode 100644 cps-ri/src/main/resources/changelog/db/changes/22-fragment-id-sequence-rollback.sql create mode 100644 cps-ri/src/main/resources/changelog/db/changes/22-fragment-id-sequence.yaml (limited to 'cps-ri') 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 old mode 100755 new mode 100644 index 12f42f2b7..c763f61f8 --- 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 f76c5ba3b..e10ce633d 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 000000000..7f8d686c7 --- /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 000000000..88bb8c774 --- /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 000000000..8bdabb501 --- /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 -- cgit 1.2.3-korg