Skip to content

Commit c26812e

Browse files
authored
Merge pull request #11898 from IQSS/11828-unacceptable-performance-deleting-datasets
adding indexes and other sql for performance improvements with deleting Datasets and DatasetVersions
2 parents a862c90 + e4526ca commit c26812e

File tree

6 files changed

+18
-2
lines changed

6 files changed

+18
-2
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
This release adds database indexes on GuestbookResponse and DatasetMetrtics, speeding up Dataset deletes. It also adds a constraint preventing null VersionState, as a matter of good housekeeping practice.

src/main/java/edu/harvard/iq/dataverse/DatasetVersion.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ public enum VersionState {
159159
* @todo versionState should never be null so when we are ready, uncomment
160160
* the `nullable = false` below.
161161
*/
162-
// @Column(nullable = false)
162+
@Column(nullable = false)
163163
@Enumerated(EnumType.STRING)
164164
private VersionState versionState;
165165

src/main/java/edu/harvard/iq/dataverse/FileAccessRequest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public class FileAccessRequest implements Serializable{
5555
private Long id;
5656

5757
@ManyToOne
58-
@JoinColumn(nullable=false)
58+
@JoinColumn(name="datafile_id", nullable=false)
5959
private DataFile dataFile;
6060

6161
@ManyToOne

src/main/java/edu/harvard/iq/dataverse/GuestbookResponse.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@
3737
@Table(indexes = {
3838
@Index(columnList = "guestbook_id"),
3939
@Index(columnList = "datafile_id"),
40+
@Index(columnList = "datasetversion_id"),
41+
@Index(columnList = "authenticateduser_id"),
4042
@Index(columnList = "dataset_id")
4143
})
4244

src/main/java/edu/harvard/iq/dataverse/makedatacount/DatasetMetrics.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,10 @@
88
import jakarta.persistence.GeneratedValue;
99
import jakarta.persistence.GenerationType;
1010
import jakarta.persistence.Id;
11+
import jakarta.persistence.Index;
1112
import jakarta.persistence.JoinColumn;
1213
import jakarta.persistence.ManyToOne;
14+
import jakarta.persistence.Table;
1315
import jakarta.persistence.Transient;
1416
import jakarta.validation.constraints.NotNull;
1517

@@ -27,6 +29,9 @@
2729
* downloads for a given month.
2830
*/
2931
@Entity
32+
@Table(indexes = {
33+
@Index(columnList = "dataset_id")
34+
})
3035
public class DatasetMetrics implements Serializable {
3136

3237
@Id
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
CREATE INDEX IF NOT EXISTS INDEX_GUESTBOOKRESPONSE_datasetversion_id ON GUESTBOOKRESPONSE (datasetversion_id);
2+
3+
CREATE INDEX IF NOT EXISTS INDEX_DATASETMETRICS_dataset_id ON DATASETMETRICS (dataset_id);
4+
5+
CREATE INDEX IF NOT EXISTS INDEX_GUESTBOOKRESPONSE_authenticateduser_id ON GUESTBOOKRESPONSE (authenticateduser_id);
6+
7+
UPDATE datasetversion SET versionstate = 'DRAFT' where versionstate IS NULL;
8+
ALTER TABLE datasetversion ALTER COLUMN versionstate SET NOT NULL;

0 commit comments

Comments
 (0)