1. 程式人生 > >mysql 垂直分表技術的實戰演練,有實戰代碼。

mysql 垂直分表技術的實戰演練,有實戰代碼。

主表 實戰 AD tab 進行 輸入 case 多個 兩張

垂直分表技術

垂直分割指的是:表的記錄並不多,但是字段卻很長,表占用空間很大,檢索表的時候需要執行大量的IO,嚴重降低了性能。這時需要把大的字段拆分到另一個表,並且該表與原表是一對一的關系。

1,垂直分表技術首先要註意的是數據庫的設計,把一些字段較大的數據存在另外一張表。比如:文章內容。這兩張表的id是一一對應的,另外他們的表名前部分是相同的,後面這一張表的結尾連一個‘_data’。方便後面的數據操作。

技術分享圖片

2,數據表設計完成以後就是數據的存儲了,這裏在註意的是兩張表的id是一一對應的。廢話不多說,直接擼代碼:

 1 /*
 2 本實例是使用phpcms,不熟悉這個框架的朋友也沒關系,可能實例化模型是用phpcms方式,其他的都是原生php知識
3 */ 4 5 /*數據的存儲*/ 6 $this->case = pc_base::load_model(‘case_model‘);//實例化case模型;如thinkphp5:$case=new Case(); 7 $info=array();//用於存儲普通數據 8 $content=array();//用於存儲大數據 9 $info[‘name‘]=$_POST[‘name‘]; 10 $info[‘phone‘]=$_POST[‘phone‘]; 11 $info[‘email‘]=$_POST[‘email‘]; 12 13 $id=$this->case->insert($info
);//把小字段的數據存進主表當中,並且返回id; 14 15 $this->case->table_name=$this->case->table_name.‘_data‘;//把數據表設置為附表,去附表查詢相關內容; 16 $content[‘content‘]=$_POST[‘content‘]; 17 $content[‘id‘]=$id; 18 $this->case->insert($content);

3,數據的讀取,數據的讀取關鍵是利用 array_merger() 方法將兩個數據合並

定義和用法
array_merge() 函數把一個或多個數組合並為一個數組。


提示:您可以向函數輸入一個或者多個數組。
註釋:如果兩個或更多個數組元素有相同的鍵名,則最後的元素會覆蓋其他元素。
註釋:如果您僅向 array_merge() 函數輸入一個數組,且鍵名是整數,則該函數將返回帶有整數鍵名的新數組,其鍵名以 0 開始進行重新索引。

1 /*數據的讀取*/
2 $userid=$_GET[‘userid‘];//獲取文章id
3 $data=$this->case->get_one(array(‘id‘=>$id));//取數據;如think5: Case::get([‘id‘=>$id]);
4 $this->case->table_name=$this->case->table_name.‘_data‘;//把數據表設置為附表,去附表查詢相關內容;
5 $datas=$this->case->get_one(array(‘id‘=>$id));//查詢到附表的字段;一般為大字段。content之類的。
6 $data=array_merge($data,$datas);//將兩個數據合並,就得到了最終想要的數據了

mysql 垂直分表技術的實戰演練,有實戰代碼。