當(dāng)面臨快速的生活節(jié)奏而令人厭惡的工作!現(xiàn)在大多數(shù)人選擇放松自己的方式就是玩游戲,最為突出的可能就要屬手游”王者榮耀”。
據(jù)說這款游戲上到70旬老者,下至小學(xué)生都玩,老張我也玩。段位低得可憐(PS:最近剛玩哈),剛剛白銀。
當(dāng)時(shí)也想讓別人帶帶我,說你只要給多少錢,就能快速帶你從倔強(qiáng)青銅到最強(qiáng)王者,但最后我在裝逼和省錢的抉擇上,我選擇了省錢。我心想就玩一個(gè)游戲,無非你就是比我玩的時(shí)間長,有技巧,有經(jīng)驗(yàn)嘛,但凡我多花點(diǎn)時(shí)間,絕對比你玩的好。
話雖這么說,老張我也不喜歡把時(shí)間浪費(fèi)在游戲上,但我喜歡抽時(shí)間寫博文,給大家多分享知識。因?yàn)槲艺J(rèn)為技術(shù)重在交流,溝通,只有互相多學(xué)習(xí),才能進(jìn)步得更快!既然玩?zhèn)€游戲都可以分段位,那么我們所工作于技術(shù)這個(gè)領(lǐng)域更是層級分明。
雖然我不能教大家怎么在游戲中提升自己,但我可以給大家分享讓自己在數(shù)據(jù)庫領(lǐng)域里面級別提升。做一個(gè)人人敬仰的大神,一個(gè)最強(qiáng)的王者!
MySQL 數(shù)據(jù)庫知識脈絡(luò),大致可以分為四大模塊:
MySQL 體系結(jié)構(gòu);
MySQL 備份恢復(fù);
MySQL 高可用集群;
MySQL 優(yōu)化。
從四大模塊中,抽離7個(gè)部分給大家做分析
第一部分:倔強(qiáng)青銅篇
剛接觸 MySQL 數(shù)據(jù)庫的小白首先要了解,MySQL 常用操作命令以及 MySQL 各個(gè)版本的特點(diǎn)。從官方 5.1 到 MySQL 5.7,每個(gè)版本之間的跨度經(jīng)歷了哪些功能和性能上面的提升。
當(dāng)然在這個(gè)階段,新加坡電信服務(wù)器 馬來西亞服務(wù)器,我們也要學(xué)會如何安裝 MySQL 數(shù)據(jù)庫和一些常用命令的使用。
常用命令總結(jié):
create database name; 創(chuàng)建數(shù)據(jù)庫
use databasename; 選擇數(shù)據(jù)庫
drop database name; 直接刪除數(shù)據(jù)庫,不提醒
show tables; 顯示表
describe tablename; 表的詳細(xì)描述
select 中加上distinct去除重復(fù)字段 顯示當(dāng)前mysql版本和當(dāng)前日期
select version(),current_date;修改mysql中root的密碼:
shell>mysql -u root -p mysql> update user set password=password(“root123″) where user=’root’;
mysql> flush privileges 刷新權(quán)限
mysql>use dbname; 打開數(shù)據(jù)庫
mysql>show databases; 顯示所有數(shù)據(jù)庫
mysql>show tables; 顯示數(shù)據(jù)庫mysql中所有的表 mysql>desc user; 顯示表mysql數(shù)據(jù)庫中user表的列信息)
grant 創(chuàng)建一個(gè)可以從任何地方連接到服務(wù)器的一個(gè)超管賬戶,必須分配一個(gè)密碼 mysql> grant all privileges on *.* to 'user_name'@'localhost' identified by 'password' ;
格式:grant select on 數(shù)據(jù)庫.* to 用戶名@登錄主機(jī) identified by “密碼” 刪除授權(quán): mysql> revoke all privileges on *.* from root@”%”;
mysql> delete from user where user=”root” and host=”%”; mysql> flush privileges;
重命名表: mysql > alter table t1 rename t2;
備份: mysqldump -hhostname -uusername -ppassword databasename > backup.sql;
恢復(fù): mysql -hhostname -uusername -ppassword databasename< backup.sql;
在這里舉兩個(gè)典型案例,MySQL 5.6 和 MySQL 5.7 在初始化數(shù)據(jù)時(shí)候的安裝差異。
MySQL 5.6:初始化數(shù)據(jù)時(shí)需要進(jìn)到家目錄的 script 目錄下
執(zhí)行:
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql/ --datadir=/data/mysql --defaults-file=/etc/my.cnf --user=mysql
此時(shí)數(shù)據(jù)庫密碼為空。
MySQL 5.7:初始化數(shù)據(jù)時(shí)需要進(jìn)到家目錄的 bin 目錄下
執(zhí)行:
/usr/local/mysql/bin/mysqld --user=mysql --datadir=/data/mysql --basedir=/usr/local/mysql/ --initialize
已然已經(jīng)廢棄了使用 mysql_install_db 這個(gè)命令進(jìn)行初始化數(shù)據(jù)的操作了。
注:–initialize 會自動(dòng)生成密碼在 error log 里面。如果加 –initialize-insecure 密碼為空
第二部分:秩序白銀篇
大概了解完 MySQL 的安裝,我們來介紹下 MySQL 的體系結(jié)構(gòu)。先看下官方版本的圖:
從圖中我們可以看出:MySQL 體系結(jié)構(gòu)分兩部分(mysql server 層 + mysql 存儲引擎層)
通過一條 sql 語句進(jìn)入數(shù)據(jù)庫的過程細(xì)分,又可以由8個(gè)小部分組成如下圖:
1-6 都是經(jīng)歷 mysql-server 層部分,7 是我們數(shù)據(jù)庫的存儲引擎層部分。因此拋出了我們要學(xué)習(xí)各個(gè)存儲引擎的區(qū)別。
這里只介紹兩種最長使用的 Innodb 和 Myisam 區(qū)別
1. 事務(wù)的支持不同(innodb支持事務(wù),myisam不支持事務(wù))
2. 鎖粒度(innodb行鎖應(yīng)用,myisam表鎖)
3. 存儲空間(innodb既緩存索引文件又緩存數(shù)據(jù)文件,myisam只能緩存索引文件)
4. 存儲結(jié)構(gòu)
(myisam:數(shù)據(jù)文件的擴(kuò)展名為.MYD myData ,索引文件的擴(kuò)展名是.MYI myIndex)
(innodb:所有的表都保存在同一個(gè)數(shù)據(jù)文件里面 即為.Ibd)
5. 統(tǒng)計(jì)記錄行數(shù)
(myisam:保存有表的總行數(shù),select count(*) from table;會直接取出出該值)
(innodb:沒有保存表的總行數(shù),select count(*) from table;就會遍歷整個(gè)表,消耗相當(dāng)大)
第三部分:榮耀黃金篇