diff --git a/config/feature_flags/development/attach_ci_builds_partition.yml b/config/feature_flags/development/attach_ci_builds_partition.yml
deleted file mode 100644
index 44c86dfd6cee5e329b4687e52696875a4052aa8c..0000000000000000000000000000000000000000
--- a/config/feature_flags/development/attach_ci_builds_partition.yml
+++ /dev/null
@@ -1,8 +0,0 @@
----
-name: attach_ci_builds_partition
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121554
-rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/382033
-milestone: '16.1'
-type: development
-group: group::pipeline execution
-default_enabled: false
diff --git a/lib/gitlab/database/ci_builds_partitioning.rb b/lib/gitlab/database/ci_builds_partitioning.rb
deleted file mode 100644
index b726157044f2e639a7b4eb6d6b83ddbf9b8da97e..0000000000000000000000000000000000000000
--- a/lib/gitlab/database/ci_builds_partitioning.rb
+++ /dev/null
@@ -1,125 +0,0 @@
-# frozen_string_literal: true
-
-module Gitlab
-  module Database
-    class CiBuildsPartitioning
-      include AsyncDdlExclusiveLeaseGuard
-
-      ATTEMPTS = 10
-      LOCK_TIMEOUT = 10.seconds
-      LEASE_TIMEOUT = 35.minutes
-
-      def initialize(logger: Gitlab::AppLogger)
-        @connection = ::Ci::ApplicationRecord.connection
-        @timing_configuration = Array.new(ATTEMPTS) { [LOCK_TIMEOUT, rand((1.minute)..(3.minutes))] }
-        @logger = logger
-      end
-
-      def execute
-        return unless can_execute?
-
-        try_obtain_lease do
-          lock_retries.run(raise_on_exhaustion: true) do
-            connection.execute(partitioning_sql)
-          end
-
-          log_info('Partition attached')
-        end
-
-      rescue WithLockRetries::AttemptsExhaustedError
-        log_info('Failed to attach partition')
-      end
-
-      private
-
-      attr_reader :connection, :timing_configuration, :logger
-
-      def can_execute?
-        return false if process_disabled?
-        return false unless Gitlab.com?
-        return false unless connection.table_exists?(:p_ci_builds)
-
-        if already_attached?
-          log_info('Table already attached')
-
-          return false
-        end
-
-        if vacuum_running?
-          log_info('Autovacuum detected')
-
-          return false
-        end
-
-        true
-      end
-
-      def process_disabled?
-        ::Feature.disabled?(:attach_ci_builds_partition)
-      end
-
-      def already_attached?
-        Gitlab::Database::SharedModel.using_connection(connection) do
-          Gitlab::Database::PostgresPartition
-            .for_parent_table('public.p_ci_builds')
-            .for_identifier('public.ci_builds')
-            .exists?
-        end
-      end
-
-      def vacuum_running?
-        Gitlab::Database::SharedModel.using_connection(connection) do
-          Gitlab::Database::PostgresAutovacuumActivity
-            .for_tables(%i[ci_pipelines ci_stages ci_builds ci_resource_groups])
-            .any?
-        end
-      end
-
-      def lock_retries
-        Gitlab::Database::WithLockRetries.new(
-          timing_configuration: timing_configuration,
-          connection: connection,
-          logger: logger,
-          klass: self.class
-        )
-      end
-
-      def partitioning_sql
-        <<~SQL.squish
-          SET LOCAL statement_timeout TO '11s';
-
-          LOCK ci_pipelines, ci_stages, ci_builds, ci_resource_groups IN ACCESS EXCLUSIVE MODE;
-
-          DROP TRIGGER IF EXISTS ci_builds_loose_fk_trigger ON ci_builds;
-
-          ALTER TABLE p_ci_builds ATTACH PARTITION ci_builds FOR VALUES IN (100);
-
-          ALTER SEQUENCE ci_builds_id_seq OWNED BY p_ci_builds.id;
-          ALTER TABLE p_ci_builds DROP CONSTRAINT partitioning_constraint;
-
-          CREATE TRIGGER ci_builds_loose_fk_trigger
-            AFTER DELETE ON ci_builds
-            REFERENCING OLD TABLE AS old_table
-            FOR EACH STATEMENT EXECUTE FUNCTION insert_into_loose_foreign_keys_deleted_records();
-
-          CREATE TRIGGER p_ci_builds_loose_fk_trigger
-            AFTER DELETE ON p_ci_builds
-            REFERENCING OLD TABLE AS old_table
-            FOR EACH STATEMENT EXECUTE FUNCTION insert_into_loose_foreign_keys_deleted_records();
-        SQL
-      end
-
-      def log_info(message)
-        logger.info(message: message, class: self.class.to_s)
-      end
-
-      def connection_db_config
-        ::Ci::ApplicationRecord.connection_db_config
-      end
-
-      def lease_timeout
-        LEASE_TIMEOUT
-      end
-    end
-  end
-end
diff --git a/lib/tasks/gitlab/db.rake b/lib/tasks/gitlab/db.rake
index c9b02304d2927b2109b6ebf039c0db0966e77f44..0c7c1872f1b5d13a96255d35cd422f05468d0720 100644
--- a/lib/tasks/gitlab/db.rake
+++ b/lib/tasks/gitlab/db.rake
@@ -241,7 +241,6 @@ namespace :gitlab do
         exit
       end
 
-      Gitlab::Database::CiBuildsPartitioning.new.execute
       Gitlab::Database::Reindexing.invoke
     end