2019年軟件研究院新員工數(shù)據(jù)庫(kù)開發(fā)基礎(chǔ)培訓(xùn)課件.pdf
下載文檔
上傳人:地**
編號(hào):1268110
2024-12-16
89頁(yè)
2.32MB
該文檔所屬資源包:
大數(shù)據(jù)互聯(lián)網(wǎng)軟件研究院新員工規(guī)章制度信息安全5G基礎(chǔ)知識(shí)培訓(xùn)課件資料
1、 CHINAUNICOM數(shù)據(jù)庫(kù)開發(fā)基礎(chǔ)培訓(xùn)2019年07月About Me項(xiàng)目管理部項(xiàng)目管理部 劉光華劉光華Email:tel:18653176958Oracle Certified Database Administrator Professional 8i (2002.10)Oracle Certified Database Administrator Professional 10g (2008.12)20 years experience with Oracle Develop&DBA technology 10 years experience with MySQL DBA tech2、nology 培訓(xùn)目標(biāo)了解數(shù)據(jù)庫(kù)的基本概念了解數(shù)據(jù)庫(kù)的基本概念了解了解MySQL數(shù)據(jù)庫(kù)體系結(jié)構(gòu)數(shù)據(jù)庫(kù)體系結(jié)構(gòu)了解數(shù)據(jù)庫(kù)開發(fā)的基礎(chǔ)概念了解數(shù)據(jù)庫(kù)開發(fā)的基礎(chǔ)概念培訓(xùn)內(nèi)容一、數(shù)據(jù)庫(kù)基本概念一、數(shù)據(jù)庫(kù)基本概念二、二、MySQL數(shù)據(jù)庫(kù)基本概念數(shù)據(jù)庫(kù)基本概念三、阿里云數(shù)據(jù)庫(kù)三、阿里云數(shù)據(jù)庫(kù)RDS簡(jiǎn)介簡(jiǎn)介四、四、MySQL數(shù)據(jù)庫(kù)基礎(chǔ)操作數(shù)據(jù)庫(kù)基礎(chǔ)操作五、五、MySQL數(shù)據(jù)庫(kù)應(yīng)用開發(fā)基礎(chǔ)數(shù)據(jù)庫(kù)應(yīng)用開發(fā)基礎(chǔ)數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)基本概念基本概念 數(shù)據(jù)數(shù)據(jù)(Data)(Data)數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)(Database)(Database)數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)(DBMS)數(shù)據(jù)庫(kù)系統(tǒng)數(shù)據(jù)庫(kù)系統(tǒng)(DBS)(DBS)數(shù)3、據(jù)數(shù)據(jù) 數(shù)據(jù)數(shù)據(jù)(Data)的定義:的定義:對(duì)客觀事物的符號(hào)表示,對(duì)客觀事物的符號(hào)表示,如圖形符號(hào)、數(shù)字、字母等,數(shù)據(jù)是數(shù)據(jù)庫(kù)中存儲(chǔ)的基本對(duì)象。在日常生活中,人們直接用語(yǔ)言來(lái)描述事物;在計(jì)算機(jī)中,為了存儲(chǔ)和處理這些事物,就要將事物的特征抽象出來(lái)組成一個(gè)記錄來(lái)描述。數(shù)據(jù)的種類文字、圖形、圖象、聲音 數(shù)據(jù)的特點(diǎn)數(shù)據(jù)與其語(yǔ)義是不可分的數(shù)據(jù)舉例 學(xué)生檔案中的學(xué)生記錄(張華,男,1984,上海,計(jì)算機(jī)系,2003)數(shù)據(jù)的形式不能完全表達(dá)其內(nèi)容 數(shù)據(jù)的解釋語(yǔ)義:學(xué)生姓名、性別、出生年月、籍貫、所在系別、入學(xué)時(shí)間解釋:張華是個(gè)大學(xué)生,1984年出生,上海人,2003年考入計(jì)算機(jī)系數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù) 數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)(4、Database,簡(jiǎn)稱DB)的定義的定義:“按照數(shù)據(jù)結(jié)構(gòu)來(lái)組織、存儲(chǔ)和管理數(shù)據(jù)的倉(cāng)庫(kù)”J.Martin給數(shù)據(jù)庫(kù)下了一個(gè)比較完整的定義:數(shù)據(jù)庫(kù)是存儲(chǔ)在一起的相關(guān)數(shù)據(jù)的集合,這些數(shù)據(jù)是結(jié)構(gòu)化的,無(wú)有害的或不必要的冗余,并為多種應(yīng)用服務(wù)數(shù)據(jù)庫(kù)發(fā)展簡(jiǎn)史1951:Univac系統(tǒng)使用磁帶和穿孔卡片作為數(shù)據(jù)存儲(chǔ)。1970:E.F.Codd提出了關(guān)系數(shù)據(jù)庫(kù)模型。1974年:IBM的Ray Boyce和Don Chamberlin將Codd關(guān)系數(shù)據(jù)庫(kù)的12條準(zhǔn)則的數(shù)學(xué)定義以簡(jiǎn)單的關(guān)鍵字語(yǔ)法表現(xiàn)出來(lái),里程碑式地提出了SQL(Structured Query Language)語(yǔ)言。1979:Oracle公司引入5、了第一個(gè)商用SQL關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)。1983:IBM 推出了DB2數(shù)據(jù)庫(kù)產(chǎn)品。數(shù)據(jù)庫(kù)管理系統(tǒng) 數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)(Database Management System)是一種操縱和管理數(shù)據(jù)庫(kù)的大型軟件,是用于建立、使用和維護(hù)數(shù)據(jù)庫(kù),簡(jiǎn)稱DBMS。關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)稱為RDBMS,R指RelationRelation DBMS的作用 它對(duì)數(shù)據(jù)庫(kù)進(jìn)行統(tǒng)一的管理和控制,以保證數(shù)據(jù)庫(kù)的安全性和完整性。DBMS的主要功能For 開發(fā)人員數(shù)據(jù)定義功能:提供數(shù)據(jù)定義語(yǔ)言(DDL)定義數(shù)據(jù)庫(kù)中的數(shù)據(jù)對(duì)象數(shù)據(jù)操縱功能:提供數(shù)據(jù)操縱語(yǔ)言(DML)操縱數(shù)據(jù)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的基本操作(查詢、插入、刪除和修改6、)DBMS的主要功能For數(shù)據(jù)庫(kù)管理員數(shù)據(jù)庫(kù)的運(yùn)行管理保證數(shù)據(jù)的安全性、完整性、多用戶對(duì)數(shù)據(jù)的并發(fā)使用發(fā)生故障后的系統(tǒng)恢復(fù)數(shù)據(jù)庫(kù)的建立和維護(hù)功能(實(shí)用程序)數(shù)據(jù)庫(kù)數(shù)據(jù)批量裝載數(shù)據(jù)庫(kù)轉(zhuǎn)儲(chǔ)介質(zhì)故障恢復(fù)數(shù)據(jù)庫(kù)的重組織性能監(jiān)視等常見的RDBMS Oracle DB2 Sybase MS SQL Server MySQL PostGreSQL 曾經(jīng)流行的DBMS Ingres Informix Rdb/vms Xbase:dBase Foxbase Foxpro 數(shù)據(jù)庫(kù)系統(tǒng) 數(shù)據(jù)庫(kù)系統(tǒng)(Database System,簡(jiǎn)稱DBS)是一個(gè)實(shí)際可運(yùn)行的存儲(chǔ)、維護(hù)和應(yīng)用系統(tǒng)提供數(shù)據(jù)的軟件系統(tǒng) 數(shù)據(jù)庫(kù)系統(tǒng)構(gòu)成 7、DBMS DB 應(yīng)用軟件 數(shù)據(jù)庫(kù)管理員 用戶15數(shù)據(jù)庫(kù)系統(tǒng)的使用數(shù)據(jù)庫(kù)服務(wù)器響應(yīng)和提供數(shù)據(jù)應(yīng)用程序數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)操作和查詢16數(shù)據(jù)庫(kù)系統(tǒng)的使用培訓(xùn)內(nèi)容一、數(shù)據(jù)庫(kù)基本概念一、數(shù)據(jù)庫(kù)基本概念二、二、MySQL數(shù)據(jù)庫(kù)基本概念數(shù)據(jù)庫(kù)基本概念三、阿里三、阿里RDS簡(jiǎn)介簡(jiǎn)介四、四、MySQL數(shù)據(jù)庫(kù)安裝配置數(shù)據(jù)庫(kù)安裝配置五、五、MySQL數(shù)據(jù)庫(kù)應(yīng)用開發(fā)基礎(chǔ)數(shù)據(jù)庫(kù)應(yīng)用開發(fā)基礎(chǔ)Whats MySQL?什么是MySQL是一個(gè)開源數(shù)據(jù)庫(kù)管理系統(tǒng),開發(fā)者為瑞典MySQL AB公司。體積小、速度快、總體擁有成本低開始廣泛地應(yīng)用在Internet上的中小型網(wǎng)站中目前廣泛應(yīng)用于企業(yè)級(jí)應(yīng)用最新版本8.0,常用版本5.7、5.68、MySQL數(shù)據(jù)庫(kù)歷史 發(fā)展歷程2001 2007 開源飛速發(fā)展期 MySQL AB2008.01 2009.04 SUN10億美金收購(gòu)MySQL SUN MySQL2009.04 now Oracle以74億美金收購(gòu)SUN Oracle MySQLMySQL企業(yè)級(jí)環(huán)境應(yīng)用MySQL企業(yè)級(jí)環(huán)境應(yīng)用MySQLOracle/DB2/Microsoft SQL Server服務(wù)器類型PC機(jī)小型機(jī)服務(wù)器數(shù)量多相對(duì)較少服務(wù)器管理分布式集中式應(yīng)用類型OLTPOLTP&OLAP行業(yè)互聯(lián)網(wǎng)傳統(tǒng)行業(yè)MySQL企業(yè)級(jí)環(huán)境應(yīng)用 總結(jié)MySQL已然成為互聯(lián)網(wǎng)公司“標(biāo)配”數(shù)據(jù)庫(kù)Facebook、Google、Twitte9、r淘寶去IOE,Oracle=MySQLeBay去IOE,Oracle=MySQL傳統(tǒng)行業(yè)正在逐步將一些應(yīng)用遷移到MySQLMySQL數(shù)據(jù)庫(kù)體系結(jié)構(gòu) 單進(jìn)程多線程Like Microsoft SQL ServerOracle多進(jìn)程架構(gòu)(except Windows)插件式存儲(chǔ)引擎架構(gòu) 多數(shù)據(jù)庫(kù)Oracle 單數(shù)據(jù)庫(kù)多用戶Microsoft SQL Server 多數(shù)據(jù)庫(kù)DB2 多數(shù)據(jù)庫(kù)MySQL數(shù)據(jù)庫(kù)體系結(jié)構(gòu)MySQL數(shù)據(jù)庫(kù)體系結(jié)構(gòu) 主要文件配置文件(config file)錯(cuò)誤文件(error file)慢查詢?nèi)罩荆╯low log)二進(jìn)制日志(binlog)MySQL數(shù)據(jù)庫(kù)體系結(jié)構(gòu) 配置文10、件/etc/f-defaults-file mysql help|grep fMySQL數(shù)據(jù)庫(kù)體系結(jié)構(gòu) 配置文件/etc/fmysqldskip-slave-startlog_slave_updates =1read_only =1server-id =998bind-address =172.17.1.4port =4331pid-file =/home/ddb/mysql/db-55-1/mysqld.pidsocket =/home/ddb/mysql/db-55-1/mysqld.sockbasedir =/usr/local/mysql/datadir =/home/ddb/mysq11、l/db-55-1innodb_data_home_dir =/home/ddb/mysql/db-55-1innodb_log_group_home_dir =/home/ddb/mysql/db-55-1tmpdir =/home/ddb/mysql/db-55-1log-error =/home/ddb/mysql/db-55-1/mysqld.loglog_slow_queries =/home/ddb/mysql/db-55-1/mysql-slow.loglog_bin =/home/ddb/mysql/db-55-1/mysql-bin.loguser =mysqllanguag12、e =/usr/local/mysql/shareMySQL數(shù)據(jù)庫(kù)體系結(jié)構(gòu) 錯(cuò)誤文件Like Oracle alert.log故障診斷性能調(diào)優(yōu) 死鎖信息 latch信息MySQL數(shù)據(jù)庫(kù)體系結(jié)構(gòu) 慢查詢?nèi)罩居涗涍\(yùn)行超過(guò)某個(gè)時(shí)間閾值的SQL slow_query_log=0|1MySQL 5.1開始以毫秒為單位 long_query_timeMySQL 5.5開始可以存表log_output=FILE|TABLE|NONE-log_output=FILE,TABLEMySQL數(shù)據(jù)庫(kù)體系結(jié)構(gòu) 二進(jìn)制日志邏輯日志 NOT LIKE Oralce redo logmysqlbinlog可以進(jìn)行解析rep13、lication基于二進(jìn)制日志可用于point-in-time的恢復(fù)安全與審計(jì)MySQL數(shù)據(jù)庫(kù)體系結(jié)構(gòu)MySQL數(shù)據(jù)庫(kù)體系結(jié)構(gòu) 數(shù)據(jù)文件組織存儲(chǔ)引擎介紹 存儲(chǔ)引擎分類 InnoDB MyIAM Archive Merge Fedorated Infobright Spider存儲(chǔ)引擎介紹 InnoDBMySQL OLTP第一存儲(chǔ)引擎 Facebook、Twitter、Google、163、taobaoMySQL 5.5開始成為默認(rèn)的存儲(chǔ)引擎Oracle僅支持InnoDB存儲(chǔ)引擎的后續(xù)持續(xù)開發(fā)存儲(chǔ)引擎介紹InnoDB 事務(wù)支持,F(xiàn)ully ACID 行級(jí)鎖 Row-level locking 多14、版本并發(fā)控制 Multi-version concurrency control(MVCC)外鍵支持 Foreign key support 自動(dòng)死鎖檢測(cè) Automatic deadlock detection 高性能、高擴(kuò)展、高可用 High performance,high scalability,high availabilityInnoDB physical storage 頁(yè)(page)最小IO單位 區(qū)(extent)空間管理單位 段(segment)對(duì)象 表空間數(shù)據(jù)和索引合并存儲(chǔ)一個(gè)文件,.ibd,每個(gè)表單獨(dú)存儲(chǔ)/ibdata,表定義文件.frm存儲(chǔ)引擎介紹 MyISAMMySQ15、L 5.5之前默認(rèn)的存儲(chǔ)引擎不支持事務(wù)表鎖設(shè)計(jì) 多讀單寫數(shù)據(jù)丟失風(fēng)險(xiǎn)高Oracle MySQL后續(xù)不再對(duì)其進(jìn)行開發(fā)多核性能表現(xiàn)較差數(shù)據(jù)和索引單獨(dú)存儲(chǔ).myi .myd,.frm 存儲(chǔ)引擎介紹 AriaMyISAM后續(xù)版本由MariaDB進(jìn)行維護(hù)與開發(fā)兼容原MyISAM文件支持事務(wù)與非事務(wù)選項(xiàng)支持提供更好的性能存儲(chǔ)引擎介紹 Archive主要用于歸檔數(shù)據(jù)的保存使用zlib無(wú)損壓縮算法僅支持SELECT與INSERT兩種操作Oracle不再提供后續(xù)開發(fā)支持存儲(chǔ)引擎介紹 Fedorated Like Oracle Transparent Gateway 僅支持連接MySQL數(shù)據(jù)庫(kù)-federated16、 Oracle不再提供后續(xù)開發(fā)支持存儲(chǔ)引擎介紹 Infobright 第三方存儲(chǔ)引擎 非開源 面向列的存儲(chǔ)方式 OLAP 騰訊、華為 培訓(xùn)內(nèi)容一、數(shù)據(jù)庫(kù)基本概念一、數(shù)據(jù)庫(kù)基本概念二、二、MySQL數(shù)據(jù)庫(kù)基本概念數(shù)據(jù)庫(kù)基本概念三、阿里三、阿里RDS簡(jiǎn)介簡(jiǎn)介四、四、MySQL數(shù)據(jù)庫(kù)安裝配置數(shù)據(jù)庫(kù)安裝配置五、五、MySQL數(shù)據(jù)庫(kù)應(yīng)用開發(fā)基礎(chǔ)數(shù)據(jù)庫(kù)應(yīng)用開發(fā)基礎(chǔ)43RDS 基本概念RDS(Relational Database Service)是一種穩(wěn)定可靠、可彈性伸縮的在線數(shù)據(jù)庫(kù)服務(wù)基于阿里云分布式文件系統(tǒng)和SSD盤高性能存儲(chǔ)支持MySQL、SQL Server、PostgreSQL、PPAS和Mar17、iaDB引擎提供了容災(zāi)、備份、恢復(fù)、監(jiān)控、遷移等方面的全套解決方案天宮平臺(tái)RDS 采用MySQL 5.6 引擎44RDS 基本概念45RDS基本概念46RDS 基本概念培訓(xùn)內(nèi)容一、數(shù)據(jù)庫(kù)基本概念一、數(shù)據(jù)庫(kù)基本概念二、二、MySQL數(shù)據(jù)庫(kù)基本概念數(shù)據(jù)庫(kù)基本概念三、阿里三、阿里RDS簡(jiǎn)介簡(jiǎn)介四、四、MySQL數(shù)據(jù)庫(kù)基本操作數(shù)據(jù)庫(kù)基本操作五、五、MySQL數(shù)據(jù)庫(kù)應(yīng)用開發(fā)基礎(chǔ)數(shù)據(jù)庫(kù)應(yīng)用開發(fā)基礎(chǔ)MySQL安裝配置 下載地址:https:/ windowsfor linux MySQL客戶端常用圖形客戶端工具:SQLyognavicat(可網(wǎng)上下載)命令行方式:mysql-helpMySQL安裝配置MyS18、QL基本操作 mysql、mysqladmin和mysqldump MySQL管理工具和用戶操作界面mysql命令 mysql命令mysql-h host_name-u user_name ppasswordh:當(dāng)連接MySQL服務(wù)器不在同臺(tái)主機(jī)時(shí),填寫主機(jī)名或IP地址u:登錄MySQL的用戶名p:登錄MySQL的密碼 注意:密碼如果寫在命令行的時(shí)候一定不能有空格。如果使用的系統(tǒng)為linux并且登陸用戶名字與MySQL的用戶名相同即可不用輸入用戶名密碼,linux默認(rèn)是以root登陸,windows默認(rèn)用戶是ODBCMySQL常用命令 選定默認(rèn)數(shù)據(jù)庫(kù):use dbname;顯示所有數(shù)據(jù)庫(kù):sh19、ow databases;顯示默認(rèn)數(shù)據(jù)庫(kù)中所有表:show tables;放棄正在輸入的命令:c 顯示命令清單:h 退出mysql程序:q 查看MySQL服務(wù)器狀態(tài)信息:sMySQL常用命令 創(chuàng)建數(shù)據(jù)庫(kù):create database dbname;創(chuàng)建用戶:-CREATE USER user1localhost IDENTIFIED BY pass1;-GRANT SELECT,INSERT,UPDATE,DELETE ON*.*TO user1localhost;-GRANT ALL ON*.*TO user1localhost;或者 一個(gè)語(yǔ)句完成創(chuàng)建用戶、授權(quán)GRANT ALL ON*.20、*TO user1localhost IDENTIFIED BY pass1;GRANT ALL ON*.*TO user210.0.23.121 IDENTIFIED BY pass2;GRANT ALL ON*.*TO user3*IDENTIFIED BY pass3;創(chuàng)建表create table t(a int)engine=innodb;修改表存儲(chǔ)引擎 alter table t engine=myisam處理SQL文件 mysql命令執(zhí)行存放在文件里的SQL命令格式:mysql option dbname file.sqlmysql u root p dbname bak.sql21、mysqldump u root p tmpdb backuptmp.sql備份出來(lái)的是一個(gè)文本文件培訓(xùn)內(nèi)容一、數(shù)據(jù)庫(kù)基本概念一、數(shù)據(jù)庫(kù)基本概念二、二、MySQL數(shù)據(jù)庫(kù)基本概念數(shù)據(jù)庫(kù)基本概念三、阿里云數(shù)據(jù)庫(kù)三、阿里云數(shù)據(jù)庫(kù)RDS簡(jiǎn)介簡(jiǎn)介四、四、MySQL數(shù)據(jù)庫(kù)基本操作數(shù)據(jù)庫(kù)基本操作五、五、MySQL數(shù)據(jù)庫(kù)應(yīng)用開發(fā)基礎(chǔ)數(shù)據(jù)庫(kù)應(yīng)用開發(fā)基礎(chǔ)數(shù)據(jù)庫(kù)開發(fā)基礎(chǔ)事務(wù)與并發(fā)控制事務(wù)與并發(fā)控制索引設(shè)計(jì)與使用索引設(shè)計(jì)與使用SQL開發(fā)的基本原則開發(fā)的基本原則事務(wù)(Transaction)事務(wù)是數(shù)據(jù)庫(kù)區(qū)別于文件系統(tǒng)的特征之一事務(wù)是數(shù)據(jù)庫(kù)區(qū)別于文件系統(tǒng)的特征之一ACID特性特性原子性:事務(wù)不可拆分,要么都發(fā)生,要么都不22、發(fā)生一致性:事務(wù)將數(shù)據(jù)庫(kù)從一種一致狀態(tài)轉(zhuǎn)變?yōu)橄乱环N一致狀態(tài)隔離性:事務(wù)未提交前對(duì)其他事務(wù)不可見持久性:事務(wù)提交后,結(jié)果是永久保存的事務(wù)與并發(fā)控制事務(wù)與并發(fā)控制并發(fā)訪問(wèn)有可能發(fā)生的三種現(xiàn)象并發(fā)訪問(wèn)有可能發(fā)生的三種現(xiàn)象臟讀(dirty read):讀到別人未提交的數(shù)劇不可重復(fù)讀(nonrepeatable read):已經(jīng)讀到的數(shù)據(jù)被刪除或被修改,無(wú)法再次讀取到幻象讀(phantom read):由于別人插入新記錄導(dǎo)致再次讀到的數(shù)據(jù)多于以前讀到的數(shù)據(jù)事務(wù)與并發(fā)控制事務(wù)與并發(fā)控制并發(fā)事務(wù)隔離級(jí)別(并發(fā)事務(wù)隔離級(jí)別(ANSI)隔離度越高,系統(tǒng)并發(fā)性越差隔離度越高,系統(tǒng)并發(fā)性越差MySQL 默認(rèn)隔離度為23、默認(rèn)隔離度為REPEATABLE-READRDS默認(rèn)隔離度為默認(rèn)隔離度為READ-COMMITTED隔離級(jí)別隔離級(jí)別允許臟讀允許臟讀不可重復(fù)讀不可重復(fù)讀幻象讀幻象讀READ UNCOMMITTED允許允許允許READ COMMITTED不允許允許允許REPEATABLE READ不允許不允許允許SERIALIZABLE不允許不允許不允許事務(wù)和并發(fā)控制事務(wù)隔離度 查看當(dāng)前會(huì)話的事務(wù)隔離度-show variables like%tx%-SELECT session.tx_isolation 更改當(dāng)前會(huì)話的提交方式-SET tx_isolation=READ-COMMITTED-set sessi24、on.tx_isolation=READ-COMMITTED事務(wù)和并發(fā)控制事務(wù)管理 自動(dòng)提交-每個(gè)DML都是一個(gè)事務(wù),數(shù)據(jù)更改后不能撤銷,默認(rèn)方式 手工提交-通過(guò)commit永久保存數(shù)據(jù)更改,rollback 撤銷數(shù)據(jù)更改事務(wù)和并發(fā)控制事務(wù)查看當(dāng)前會(huì)話的提交方式-show variables like autocommitON=自動(dòng)提交,OFF=手動(dòng)提交-SELECT session.autocommit1=自動(dòng)提交,0=手動(dòng)提交更改當(dāng)前會(huì)話的提交方式-set autocommit=OFF-set session.autocommit=0事務(wù)與并發(fā)控制事務(wù)與并發(fā)控制鎖機(jī)制用于管理對(duì)共享資源的并25、發(fā)訪問(wèn)鎖機(jī)制用于管理對(duì)共享資源的并發(fā)訪問(wèn)DML鎖,確保任何時(shí)刻只有一人修改某行數(shù)據(jù)鎖,確保任何時(shí)刻只有一人修改某行數(shù)據(jù)TX鎖鎖(事務(wù)鎖事務(wù)鎖)每個(gè)事務(wù)會(huì)獲得一個(gè)每個(gè)事務(wù)會(huì)獲得一個(gè)TX鎖鎖TM鎖鎖 用于確保在修改表的內(nèi)容時(shí),表結(jié)構(gòu)不會(huì)用于確保在修改表的內(nèi)容時(shí),表結(jié)構(gòu)不會(huì)改變改變DDL鎖鎖,確保確保DDL操作時(shí)操作時(shí) 對(duì)象不會(huì)被其他會(huì)話修改對(duì)象不會(huì)被其他會(huì)話修改排他排他DDL鎖鎖 防止結(jié)構(gòu)和數(shù)據(jù)被其他會(huì)話修改防止結(jié)構(gòu)和數(shù)據(jù)被其他會(huì)話修改共享共享DDL 鎖鎖 防止結(jié)構(gòu)被其他會(huì)話修改防止結(jié)構(gòu)被其他會(huì)話修改事務(wù)和并發(fā)控制并發(fā)控制通過(guò)鎖實(shí)現(xiàn)并發(fā)控制 鎖的類型-共享鎖-獨(dú)占鎖 鎖的粒度-表級(jí)鎖-頁(yè)級(jí)鎖-行級(jí)26、鎖并發(fā)控制與鎖并發(fā)控制與鎖鎖定問(wèn)題鎖定問(wèn)題丟失更新丟失更新悲觀鎖定悲觀鎖定樂(lè)觀鎖定樂(lè)觀鎖定阻塞(阻塞(block)死鎖死鎖數(shù)據(jù)庫(kù)開發(fā)基礎(chǔ)事務(wù)與并發(fā)控制事務(wù)與并發(fā)控制索引設(shè)計(jì)與使用索引設(shè)計(jì)與使用SQL開發(fā)的基本原則開發(fā)的基本原則72索引 一種數(shù)據(jù)庫(kù)對(duì)象 通過(guò)指針,數(shù)據(jù)庫(kù)服務(wù)使用它來(lái)提高檢索數(shù)據(jù)的速度 通過(guò)快速路徑來(lái)定位數(shù)據(jù),減少磁盤的I/O 獨(dú)立于其索引的表 被數(shù)據(jù)庫(kù)服務(wù)自動(dòng)使用和維護(hù)索引索引特點(diǎn) 為提高查詢速度而設(shè)計(jì) B Tree索引,平衡樹,通過(guò)索引掃描定位記錄 性能基本與記錄數(shù)無(wú)關(guān) INNODB 表都是索引組織表,表數(shù)據(jù)是按主鍵順序排序的 二級(jí)索引葉子節(jié)點(diǎn)存儲(chǔ)索引鍵值和主鍵值 INNODB27、表定義必須有主鍵或唯一索引,如果沒(méi)有,則系統(tǒng)自動(dòng)產(chǎn)生隱含主鍵74索引類型 唯一索引確保在所建列上只有一個(gè)唯一值(或值組合)非唯一索引提高檢索速度 單列索引只有一列 復(fù)合索引有多列75建索引的方式 自動(dòng)建立當(dāng)定義主鍵或者唯一性約束時(shí),系統(tǒng)自動(dòng)創(chuàng)建唯一索引 手工用戶通過(guò)建立索引,提高檢索記錄的速度.索引索引使用為哪些列創(chuàng)建索引?經(jīng)常充當(dāng)查詢條件的列:where CHNL_CODE=91b02sp表連接中使用到的列:from RES_NUMBER_BATCH join NUMBER_BATCH_DETAIL ON RES_NUMBER_BATCH.BATCH_NO=NUMBER_BATCH_DETA28、IL.BATCH_NO頻繁執(zhí)行的可被索引全覆蓋的列:SELECT OCCUPY_PROVINCE_CODE,OCCUPY_AREA_CODE FROM RES_LOCKING_NUMBE排序中經(jīng)常用到的字段:SELECT.FROM RES_NUM_STORE WHERE PARENT_STORE_ID=17733691AND NOW()=IFNULL(eff_date,NOW()and IFNULL(exp_date,NOW()=NOW()order by STORE_TYPE那些列不建議 建索引經(jīng)常被更新的列,唯一值很少的列,例如status、type 等類型的字段索引設(shè)計(jì)原則 單表索引建議29、控制在5個(gè)以內(nèi) 復(fù)合索引字段數(shù)不建議超過(guò)5個(gè) 建立復(fù)合索引,建議把區(qū)分度高的字段放在前面 不建議在頻繁更新或者區(qū)分度不高的字段上建立索引索引索引使用復(fù)合索引,聯(lián)合索引:多個(gè)字段組成的索引只有查詢條件中包含索引的第一個(gè)字段,索引才會(huì)被使用建議將最常用做查詢條件的字段作為索引的第一個(gè)字段建議將選擇性高的字段作為索引的第一個(gè)字段索引優(yōu)化7復(fù)應(yīng)用系統(tǒng)中索引使用常見問(wèn)題索引缺失索引設(shè)計(jì)不合理,導(dǎo)致選擇錯(cuò)誤的索引復(fù)合索引設(shè)計(jì)不合理,導(dǎo)致沒(méi)有使用索引索引過(guò)多,單個(gè)表上的索引建議不超過(guò)5個(gè)索引重復(fù),一個(gè)字段上建多個(gè)索引在選擇性差的字段上建立索引SQL Where 條件中 發(fā)生字段類型轉(zhuǎn)換、計(jì)算等導(dǎo)致查詢無(wú)法使30、用索引數(shù)據(jù)庫(kù)開發(fā)基礎(chǔ)事務(wù)與并發(fā)控制事務(wù)與并發(fā)控制索引設(shè)計(jì)與使用索引設(shè)計(jì)與使用SQL開發(fā)的基本原則開發(fā)的基本原則81基礎(chǔ)原則不建議使用存儲(chǔ)過(guò)程、視圖、觸發(fā)器每張核心數(shù)據(jù)表數(shù)據(jù)量建議控制在1000W以內(nèi)高并發(fā)大數(shù)據(jù)的業(yè)務(wù)系統(tǒng),建議解放數(shù)據(jù)庫(kù)CPU,將復(fù)雜業(yè)務(wù)邏輯計(jì)算處理轉(zhuǎn)移到服務(wù)層不建議在數(shù)據(jù)庫(kù)內(nèi)存儲(chǔ)大文件或者大照片避開在業(yè)務(wù)高峰期批量更新、做復(fù)雜查詢統(tǒng)計(jì)82表設(shè)計(jì)單表列數(shù)目不宜過(guò)多表必須有主鍵建議盡量使用和應(yīng)用無(wú)關(guān)的主鍵,例如自增主鍵建議選擇較短的數(shù)據(jù)類型做主鍵不建議用組合索引做主鍵不建議使用外鍵(外鍵完整性約束,由應(yīng)用程序控制)選擇合適的數(shù)據(jù)類型根據(jù)業(yè)務(wù)要求選擇合適類型,避免類型轉(zhuǎn)換根據(jù)需求選31、擇合適長(zhǎng)度如果字段內(nèi)容為數(shù)字,建議用整形不用CHARCHAR和VARCHAR的選擇謹(jǐn)慎使用 TEXT、BLOB等大數(shù)據(jù)類型 選擇合適的約束類型NOT NULL的約束,NOT NULL WITH DEFAULT 唯一鍵約束主鍵約束建議所有字段定義為NOT NULL,并定義缺省值表設(shè)計(jì)了解業(yè)務(wù)開發(fā)人員和DBA都需要了解業(yè)務(wù)情況 區(qū)分sql的執(zhí)行環(huán)境,是前臺(tái)還是后臺(tái)?評(píng)估sql的執(zhí)行頻率,每天千萬(wàn)次查詢和每天幾千次查詢是不一樣的 評(píng)估sql返回的數(shù)據(jù)量,關(guān)心每條數(shù)據(jù)還是只關(guān)心前面100條?關(guān)心所有字段信息,還是只關(guān)心真正對(duì)用戶有意義的字段?評(píng)估表的數(shù)據(jù)量和增量,從而評(píng)估sql的執(zhí)行效率84SQL編寫32、原則 避免復(fù)雜的SQL語(yǔ)句,每個(gè)語(yǔ)句完成特定的功能 盡量避免復(fù)雜多表關(guān)聯(lián),建議盡量分解查詢,通過(guò)程序傳遞主鍵值給下一個(gè)表 關(guān)聯(lián)查詢 選擇用較小的表或結(jié)果集做驅(qū)動(dòng)表 簡(jiǎn)單=高性能,高擴(kuò)展性 避免不必要的工作 不必要的數(shù)據(jù)讀取,例如 select*語(yǔ)句 不必要的join,盡量減少表之間的關(guān)聯(lián) 不必要的排序Distinct、Group by、Order by、UnionSQL編寫原則 select 語(yǔ)句禁止使用*,INSERT 語(yǔ)句必須明確列名 使用表的別名 連接多個(gè)表時(shí),把表的別名前綴于每個(gè)column上 減少解析的時(shí)間以及由column歧義引起的語(yǔ)法錯(cuò)誤 使用復(fù)合索引的第一個(gè)列 拆分大事務(wù)為小的事務(wù) 整合小事務(wù),同一提交 及時(shí)commit釋放占用的鎖等資源SQL編寫原則 Where條件中等號(hào)左邊不要引用函數(shù) Where條件中對(duì)于不同的數(shù)據(jù)類型要做顯示數(shù)據(jù)轉(zhuǎn)換 NOT,!=,|不會(huì)用索引 慎用 not exists 和 exists(MySQL對(duì)此類SQL處理很差)用UNION ALL代替UNION(避免排序)謝謝!謝謝!
管理運(yùn)營(yíng)
上傳時(shí)間:2024-12-20
23份
管理運(yùn)營(yíng)
上傳時(shí)間:2024-12-20
21份
培訓(xùn)課件
上傳時(shí)間:2022-06-15
24份
銷售培訓(xùn)
上傳時(shí)間:2024-12-25
24份
運(yùn)營(yíng)管理
上傳時(shí)間:2022-06-14
23份
培訓(xùn)課件
上傳時(shí)間:2021-01-31
13份