MySQL Tablo Bölümünü Tabloya Yükselt
Google Arama becerilerim buna bir çözüm bulmak için yeterli değildi. Mümkünse, bir masadaki bir bölümü kendi başına bir tabloya nasıl yükseltebilirim?
I olduğunu varsayalım part0, part1ve part2. Yeni bir tabloya ALTER TABLEdönüşen verebileceğim herhangi bir şey var mı part0?
Düşünce sürecim, veriler zaten diskte ayrı bir dosyada mevcut olduğundan, tablo oluşturma süreci bir SELECTsorgu kullanarak yeni bir tablo oluşturmaktan daha hızlı olabilir .
Yanıtlar
İhtiyacın yok SELECT. Bu saf DDL ile yapılabilir.
Bu örnek için bölümlenmiş tablonun aşağıdaki gibi olduğunu varsayalım:
- Veri tabanı
mydb - Tablo
mytable - Bölmeler (
part0,part1,part2)
Bu zor olabilir ama işte burada
USE mydb
CREATE TABLE mynewtable LIKE mytable;
ALTER TABLE mynewtable REMOVE PARTITIONING;
ALTER TABLE mytable
EXCHANGE PARTITION p0
WITH TABLE mynewtable
WITHOUT VALIDATION
;
ALTER TABLE mytable DROP PARTITION p0;
Bunun yaptığı şey ilk önce mynewtableherhangi bir bölüm olmadan ve diğer tüm yönlerden aynı şemayı yapmaktır . Ardından, mynewtablemasayı ile değiştirir part0.
Bundan emin değilseniz, koşun
USE mydb
CREATE TABLE mynewtable LIKE mytable;
ALTER TABLE mynewtable REMOVE PARTITIONING;
ALTER TABLE mytable
EXCHANGE PARTITION p0
WITH TABLE mynewtable
WITHOUT VALIDATION
;
İçerideki mynewtableve yeniyi inceleyin part0ve emin olun
mynewtableorijinal verilere sahippart0- Yeni
part0boş olmalı
Transpozisyonun çalıştığından emin olduktan sonra çalıştırın
ALTER TABLE mytable DROP PARTITION p0;
Lütfen bunu bir laboratuarda veya kare kemanta test edin. BİR ŞANS VER !!!
Evet, a PARTITIONbir TABLE. Ancak, bir bölümü tabloya dönüştürmek veya tam tersi için bazı özel komutlar gerekir.
"Taşınabilir tablo alanları" ve İHRACAT İÇİN SIKMA TABLOLARI tablosuna bakın; DEĞİŞTİRME TABLOSU ptable DISCARD TABLESPACE; ALTER TABLE ptable TABLESPACE AKTAR. Ayrıntılar, MySQL 5.6 ve 5.7+ arasında farklıdır.
http://mysql.rjweb.org/doc.php/partitionmaint#use_cases_for_partitioning teknikleri tartışan birkaç yerle bağlantıları vardır.