sql優化--》分割槽--》分表--》垂直分庫--》水平分庫--》讀寫分離
進入到mysql命令列。mysql -u root -p show plugins
//檢視是否支援分割槽,最後會出現乙個 partition 這個行 表示支援
也可以 show variables like
'%partition%
';
show table status
selectp0 id 6 1partition_name part,
partition_expression expr,
partition_description descr,
table_rows
from information_schema.partitions where
table_schema
=schema
()
and table_name=
'test
';
select
schema() //檢視在那個資料庫
p1 id 11 0
p2 id 16 1
p3 id maxvalue 1
explain partitions select語句
![](https://pic.w3help.cc/97f/ccb5c368aca2f5ef3641a5f27f6c6.jpeg)
注意:必須建立表是的時候才能建立分割槽,不能在已有的資料上對錶進行分割槽,如果想在已有的表中建立分割槽,解決辦法是建立乙個新的表並設定好分割槽,然後再進行資料轉移。注意;號。
--將系統中不存在關聯關係或者需要join的表可以放在不同的資料庫不同的伺服器中。---------------------------------建立range分割槽
create
table
employees (
id intnot
null
, fname
varchar(30
), lname
varchar(30
), hired date
notnull
default
'1970-01-01',
separated date
notnull
default
'9999-12-31',
job_code
intnot
null
, store_id
intnot
null
)partition
byrange (store_id) (
partition p0
values less than (6
), partition p1
values less than (11
), partition p2
values less than (16
), partition p3
values
less than maxvalue
);--
---------------------------------建立list分割槽
create
table
emp (
empno
varchar (20) not
null
, empname
varchar (20
), deptno
int,
birthdate date
notnull
, salary
int) partition
bylist (deptno)(
partition p1
values
in (10
), partition p2
values
in (20
), partition p3
values
in (30));
以部門作為分割槽依據,每個部門做一分割槽。
-----------------------------------建立hash分割槽
create
table
emp2 (
empno
varchar (20
), empname
varchar (20
), deptno
int,
birthdate date ,
salary
int) partition
by hash (deptno) partitions 3;--
---------------------------------建立key分割槽
create
table
emp (
empno
varchar (20) not
null
, empname
varchar (20
), deptno
int,
birthdate date
notnull
, salary
int) partition
bykey (birthdate) partitions 4;
按照業務垂直劃分。比如:可以按照業務分為資金、會員、訂單三個資料庫。
需要解決的問題:跨資料庫的事務、join查詢等問題。
例如,大部分的站點。資料都是和使用者有關,那麼可以根據使用者,將資料按照使用者水平拆分。
按照規則劃分,一般水平分庫是在垂直分庫之後的。比如每天處理的訂單數量是海量的,可以按照一定的規則水平劃分。需要解決的問題:資料路由、組裝。
MySQL優化命令彙總
1 檢視當前伺服器配置的最多連線數 檢視當前伺服器配置的最多連線數 show variables like max connections 設定方法 set global max connections 10000 2 檢視當前已使用最大連線數 show global status like max...
MySQL問題彙總
1.先刪除前面5條記錄,然後再插入,mysql會自動填補5條記錄的位置,但id還是從8自增,中顯示的從40開始是因為我前面又做了其他的操作。好像這是mysql的優化,你刪除了前面的 後面生成的 會去補那個地方,就是刪除時 不刪除 標識 再有新的 直接蓋上了,類似我們的檔案系統 估計像是檔案碎片修復一...
mysql問題彙總
mysql提供跳過訪問控制的命令列引數,通過在命令列以此命令啟動mysql伺服器 safe mysqld skip grant tables 即可跳過mysql的訪問控制,任何人都可以在控制台以管理員的身份進入mysql資料庫。root密碼丟失時 mysqld safe skip grant tab...