mysql裡hdr是什麼的縮寫 Mysql分表教程

2021-10-18 12:07:07 字數 4118 閱讀 9575

一般來說,當我們的資料庫的資料超過了100w記錄的時候就應該考慮分表或者分割槽了,這次我來詳細說說分表的一些方法。目前我所知道的方法都是myisam的,innodb如何做分表並且保留事務和外來鍵,我還不是很了解。

首先,我們需要想好到底分多少個表,前提當然是滿足應用。這裡我使用了乙個比較簡單的分表方法,就是根據自增id的尾數來分,也就是說分0-9一共10個表,其取值也很好做,就是對10進行取模。另外,還可以根據某一字段的md5值取其中幾位進行分表,這樣的話,可以分的表就很多了。

好了,先來建立表吧,**如下:

create table `test`.`article_0` (

`id` bigint( 20 ) not null ,

`subject` varchar( 200 ) not null ,

`content` text not null ,

primary key ( `id` )

) engine = myisam character set utf8 collate utf8_general_ci

create table `test`.`article_1` (

`id` bigint( 20 ) not null ,

`subject` varchar( 200 ) not null ,

`content` text not null ,

primary key ( `id` )

) engine = myisam character set utf8 collate utf8_general_ci

create table `test`.`article_2` (

`id` bigint( 20 ) not null ,

`subject` varchar( 200 ) not null ,

`content` text not null ,

primary key ( `id` )

) engine = myisam character set utf8 collate utf8_general_ci

create table `test`.`article_3` (

`id` bigint( 20 ) not null ,

`subject` varchar( 200 ) not null ,

`content` text not null ,

primary key ( `id` )

) engine = myisam character set utf8 collate utf8_general_ci

create table `test`.`article_4` (

`id` bigint( 20 ) not null ,

`subject` varchar( 200 ) not null ,

`content` text not null ,

primary key ( `id` )

) engine = myisam character set utf8 collate utf8_general_ci

create table `test`.`article_5` (

`id` bigint( 20 ) not null ,

`subject` varchar( 200 ) not null ,

`content` text not null ,

primary key ( `id` )

) engine = myisam character set utf8 collate utf8_general_ci

create table `test`.`article_6` (

`id` bigint( 20 ) not null ,

`subject` varchar( 200 ) not null ,

`content` text not null ,

primary key ( `id` )

) engine = myisam character set utf8 collate utf8_general_ci

create table `test`.`article_7` (

`id` bigint( 20 ) not null ,

`subject` varchar( 200 ) not null ,

`content` text not null ,

primary key ( `id` )

) engine = myisam character set utf8 collate utf8_general_ci

create table `test`.`article_8` (

`id` bigint( 20 ) not null ,

`subject` varchar( 200 ) not null ,

`content` text not null ,

primary key ( `id` )

) engine = myisam character set utf8 collate utf8_general_ci

create table `test`.`article_9` (

`id` bigint( 20 ) not null ,

`subject` varchar( 200 ) not null ,

`content` text not null ,

primary key ( `id` )

) engine = myisam character set utf8 collate utf8_general_ci

好了10個表建立完畢了,需要注意的是,這裡的id不能設為自增,而且所有的表結構必須一致,包括結構,型別,長度,欄位的順序都必須一致那麼對於這個id如何取得呢?後面我會詳細說明。現在,我們需要乙個合併表,用於查詢,建立合併表的**如下:

create table `test`.`article` (

`id` bigint( 20 ) not null ,

`subject` varchar( 200 ) not null ,

`content` text not null ,

primary key ( `id` )

) engine=mrg_myisam default charset=utf8 insert_method=0 union =(`article_0`,`article_1`,`article_2`,`article_3`,`article_4`,`article_5`,`article_6`,`article_7`,`article_8`,`article_9`);

注意,合併表也必須和前面的表有相同的結構,型別,長度,包括欄位的順序都必須一致這裡的insert_method=0表示不允許對本表進行insert操作。好了,當需要查詢的時候,我們可以只對article這個表進行操作就可以了,也就是說這個表僅僅只能進行select操作,那麼對於插入也就是insert操作應該如何來搞呢,首先就是獲取唯一的id了,這裡就還需要乙個表來專門建立id,**如下:

create table `test`.`create_id` (

`id` bigint( 20 ) not null auto_increment primary key

) engine = myisam

也就是說,當我們需要插入資料的時候,必須由這個表來產生id值,我的php**的方法如下:

db->query(sql);

returnthis->db->insertid();

好了,現在假設我們要插入一條資料了,應該怎麼操作呢?還是繼續看**吧:

get_ai_id();

table_name =this->get_table_name(id);sql = "insert into (id,subject,content) values('','測試標題','測試內容')";

this->db->query(sql);

* 用於根據id獲取表名

function get_table_name(id) {

return 'article_'.intval(id)%10;

其實很簡單的,對吧,就是先獲取id,然後根據id獲取應該插入到哪個表,然後就很簡單了。

對於update的操作我想應該不需要再說了吧,無非是有了id,然後獲取表名,然後進行update操作就好了。

RPA是什麼的縮寫

rpa 是英文 robotic process automation 的縮寫,翻譯成中文就是 機器 程自動化 rpa 並不是一款實體型的機械人,它主要以軟體的方式存在。rpa 可以有效地幫助員工處理一些機械性 高頻率的工作,從而降低員工的勞動強度,提公升工作效率,降低工作成本。那麼,rpa 到底是什...

pwd命令是什麼的縮寫 pwd是什麼縮寫

pwd 是什麼縮寫 篇一 pwd是什麼縮寫 答 你這個沒有錯啊,pwd是指當前路徑,你當前就是在根目錄 下,你可以直接執行 pwd檢視當前目 錄。篇二 pwd是什麼縮寫 user 切換使用者 rpm redhat package manager 紅帽子打包管理器 pwd print work dir...

pwd命令是什麼的縮寫 Linux命令縮寫

pwd print working directory 顯示當前工作路徑。su swith user 切換使用者,切換到root使用者 cd change directory 切換目錄 ls list files 列出目錄下的檔案 ps process status 程序狀態 mkdir make ...