1. 程式人生 > >mysql 非分割槽錶轉化成分割槽表

mysql 非分割槽錶轉化成分割槽表

1.建立分割槽表

CREATE TABLE `app_visitor_logger2` (
`item_id` INT(11) NOT NULL AUTO_INCREMENT,
`page_title` VARCHAR(50) NOT NULL COMMENT '頁面名稱',
`page_code` VARCHAR(50) NOT NULL COMMENT '頁面標識',
`user_id` VARCHAR(15) NULL DEFAULT NULL COMMENT '使用者ID',
`name` VARCHAR(20) NULL DEFAULT NULL COMMENT '使用者名稱',
`additional` VARCHAR(20) NULL DEFAULT NULL COMMENT '附加資訊ID',
`additional_name` VARCHAR(20) NULL DEFAULT NULL COMMENT '附加資訊',
`browser` VARCHAR(20) NULL DEFAULT NULL COMMENT '客戶端',
`ip` VARCHAR(15) NULL DEFAULT NULL COMMENT 'IP',
`session_id` VARCHAR(32) NULL DEFAULT NULL COMMENT 'Session ID',
`source_item_id` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '源記錄ID',
`usertype` TINYINT(1) NULL DEFAULT '0' COMMENT '使用者型別',
`scene_id` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0' COMMENT '來源ID',
`scene_name` VARCHAR(50) NULL DEFAULT NULL COMMENT '來源名稱',
`subscribe_at` DATETIME NULL DEFAULT NULL COMMENT '關注時間',
`created_at` DATETIME NULL DEFAULT NULL COMMENT '記錄時間',
PRIMARY KEY (`item_id`),
INDEX `page_code` (`page_code`),
INDEX `INX_SESSION_ID` (`session_id`)
)
COMMENT='App打點統計日誌'
COLLATE='utf8_general_ci'
ENGINE=InnoDB
PARTITION BY RANGE(item_id)
(
PARTITION p0 VALUES LESS THAN (2000000),
PARTITION p1 VALUES LESS THAN (4000000),
PARTITION p2 VALUES LESS THAN (6000000),
PARTITION p3 VALUES LESS THAN (8000000),
PARTITION p4 VALUES LESS THAN MAXVALUE
)

2. 右鍵app_visitor_logger表建立觸發器app_visitor_logger_after_insert,讓有新增資料時自動新增到app_visitor_logger2中

app_visitor_logger_after_insert

BEGIN
insert into app_visitor_logger2 select * from app_visitor_logger order by item_id desc limit 1;
END

注意: 如果表涉及到更新,刪除時一定要建立多個觸發器,如app_visitor_logger_after_update,

app_visitor_logger_after_delete

BEGIN
delete from app_visitor_logger2 where app_visitor_logger2.item_id=OLD.item_id;
END

app_visitor_logger_after_update,

BEGIN
replace into app_visitor_logger2 select * from app_visitor_logger where item_id=NEW.item_id;
END

3.

a.檢視app_visitor_logger2中第一次觸發器進入資料的item_id為344011

b.匯入原有app_visitor_logger的資料到app_visitor_logger2中

insert into app_visitor_logger2 select * from app_visitor_logger where item_id > 0 and item_id <= 100000 order by item_id asc;


insert into app_visitor_logger2 select * from app_visitor_logger where item_id > 100000 and item_id <= 200000 order by item_id asc;


insert into app_visitor_logger2 select * from app_visitor_logger where item_id > 200000 and item_id <= 300000 order by item_id asc;

insert into app_visitor_logger2 select * from app_visitor_logger where item_id > 300000 and item_id <=344010 order by item_id asc;

4.修改表名並刪除觸發器

RENAME TABLE `app_visitor_logger` TO `app_visitor_logger3`;
RENAME TABLE `app_visitor_logger2` TO `app_visitor_logger`;


DROP TRIGGER `app_visitor_logger_after_insert`;
SET [email protected]_FOREIGN_KEY_CHECKS;

相關推薦

mysql 分割槽轉化分割槽

1.建立分割槽表 CREATE TABLE `app_visitor_logger2` (`item_id` INT(11) NOT NULL AUTO_INCREMENT,`page_title` VARCHAR(50) NOT NULL COMMENT '頁面名稱',`

SQL Server 2005中的分割槽(六):將已分割槽轉換普通

我的俄羅斯名叫作“不折騰不舒服斯基”,所以,不將分割槽表好好折騰一下,我就是不舒服。     在前面,我們介紹過怎麼樣直接建立一個分割槽表,也介紹過怎麼將一個普通錶轉換成一個分割槽表。那麼,這兩種方式建立的表有什麼區別呢?現在,我又最新地建立了兩個表:     第

ORACLE線上重定義--將普通轉化分割槽

10gR2 需要將一個普通錶轉為按月分割槽提高查詢效率 測試如下: 一、建立測試表 SQL> CREATE TABLE T(ID NUMBER ,TIME DATE); Table created. SQL> DESC T; Name

使用exchange 和split partition 來將一個Oracle分割槽轉換為分割槽

 線上重定義表可以將一個非分割槽錶轉換成一個分割槽表。使用exchange 和split partition 也可以將一個非分割槽錶轉換為分割槽表。後者相比較前者,因為不受要轉換的資料量影響,因此也更方便、快捷一些。     exchange partition 操作能將一個

11G普通分割槽轉化為間隔分割槽

--建立普通範圍分割槽表CREATE TABLE clg_range_table2(req_num NUMBER NOT NULL, req_date DATE NOT NULL, status     VARCHAR2(2) not NULL)PARTITION BY RA

MySQL複製舊結構建立新

1、複製表結構及資料到新表 CREATE TABLE 新表SELECT * FROM 舊錶 這種方法會將oldtable中所有的內容都拷貝過來,當然我們可以用delete from newtable;來刪除。 不過這種方法的一個最不好的地方就是新表中沒有了

oracle 分割槽分割槽

將普通錶轉換成分割槽表有4種方法:        1. Export/import method        2. Insert with a subquery method        3. Partition exchange method        4. DB

如何將硬碟分割槽轉換為GUID(GPT)分割槽

如何將硬碟分割槽錶轉換為GUID(GPT)分割槽表 如果不知道自己的硬碟分割槽表型別可以參看 Windows–如何檢視硬碟分割槽表型別 1、使用PE 製作U盤PE啟動盤 進入PE 在PE裡開啟磁碟精靈 (DG) 右鍵磁碟 選單中有轉換為GUID

5.【MYSQL分割槽&分庫&分

Mysql分割槽分庫分表 1.mysql分割槽 1.1Range分割槽 1.2List分割槽 1.3Hash分割槽 1.4 2.水平分割 3.垂直分割 1.m

將秒(時間戳)轉化 ** 小時 ** 分

res intval function turn func 分鐘 urn ret time function sec2time($sec){   $hh = intval(floor($sec/3600));   $mm = ($sec%3600

python 將函式引數一鍵轉化字典的技巧,**kwargs,抵制kwargs。

1、有時候使用設計模式,例如工廠方法模式,函式傳的引數還需要一一根據條件傳遞到各個類裡面去例項化或者其他原因,直接複製所有的引數看起來不太好,造成很多相同的行。   2、直接函式/方法中寫**kwargs,那就不需要轉化了,但寫程式碼要抵制這樣的寫法,這樣造成補全困難和使呼叫者不知道需要傳遞什麼

Oracle分割槽分為四種:範圍分割槽,雜湊分割槽,列表分割槽和複合分割槽

一:範圍分割槽 就是根據資料庫表中某一欄位的值的範圍來劃分分割槽,例如: Sql程式碼   create table graderecord     (     

mysql查看結構資訊需求背景是給一個名然後給出相應的結構資訊及索引資訊 常用的命令有如下: 1. desc tableName; desc employees.employees; 2. sh

需求背景是給一個表名然後給出相應的表結構資訊及索引資訊 常用的命令有如下: 1. desc tableName; desc employees.employees; 2. show columns from tableName; show COLUMNS from employees.employe

Partition Tables介紹及分割槽轉換

--==================== -- Partition Tables --==================== 分割槽表相關概念: 當表資料不斷增加時,查詢資料庫速度就回變慢,應用程式效能就會下降,這個時候就該考慮對錶進行分割槽管理。分割槽表在邏輯上任然是一張完整

Oracle12C新特性—只讀分割槽,外部分割槽,多列分割槽

Oracle12.2資料庫版本增加了:只讀分割槽 ;外部表分割槽 和 多列分割槽的新特性 官方文件: https://docs.oracle.com/en/database/oracle/oracle-database/12.2/vldbg/partition-create-tables-inde

mysql資料庫優化(三)--分割槽

mysql的分割槽,分表 分割槽:把一個數據表的檔案和索引分散儲存在不同的物理檔案中。 特點:業務層透明,無需任何修改,即使從新分表,也是在mysql層進行更改(業務層程式碼不動) 分表:把原來的表根據條件分成多個表,如原來的表為 user;現在分成2個小表 user_1,user_2;  特點:業務層需要修

sqlserver 分割槽-欄位id分割槽案例

1,建立檔案組 USE [master] GO ALTER DATABASE [test] ADD FILEGROUP [Group1] GO ALTER DATABASE [test] ADD FILEGROUP [Group2] GO ALTER DATABASE [t

Hive(二)--分割槽分桶,內部外部

1.簡述 Hive是hadoop生態圈中實現資料倉庫的一項技術。雖然hadoop和hdfs的設計侷限了Hive所能勝任的工作,但是hive仍然是目前網際網路中最適合資料蒼鷺的應用技術。不論從“品相還是舉止”,hive都像一個關係型資料庫。使用者對資料庫、表和列這類術語比較熟悉的話,那麼掌握h

mysql轉換為橫進行多之間的關聯查詢

1、資料庫的表可以分為兩類:縱表與橫表 縱表:表中欄位與欄位的值採用key——value形式,即表中定義兩個欄位,其中一個欄位裡存放的是欄位名稱,另一個欄位中存放的是這個欄位名稱代表的欄位的值。 例如,下面這張project_audit_log表,其中date_type欄位表示為什麼時間型別

[資料結構]單鏈 合併兩個遞減有序也是非遞減

題目一:已知線性表LA和LB中的資料元素按值非遞減有序排列,現要求將LA和LB歸併為一個新的線性表LA且LA的元素依然按值非遞減有序排列。LA=(3,5,8,11,24) LB=(2,6,8,9,11,20)要求1:(1)線性表用陣列表示。 (2)不借助多餘的儲存空間。 要