中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

mysql怎么寫需求分析 mysql如何設(shè)計(jì)數(shù)據(jù)庫(kù)

MySQL數(shù)據(jù)庫(kù)服務(wù)器逐漸變慢 該怎么分析與解決

我們先來(lái)看第一個(gè)階段,MySQL慢的診斷思路,一般我們會(huì)從三個(gè)方向來(lái)做:

成都創(chuàng)新互聯(lián)成都網(wǎng)站建設(shè)定制制作,是成都網(wǎng)站推廣公司,為成都水處理設(shè)備提供網(wǎng)站建設(shè)服務(wù),有成熟的網(wǎng)站定制合作流程,提供網(wǎng)站定制設(shè)計(jì)服務(wù):原型圖制作、網(wǎng)站創(chuàng)意設(shè)計(jì)、前端HTML5制作、后臺(tái)程序開(kāi)發(fā)等。成都網(wǎng)站制作熱線:13518219792

第一個(gè)方向是MySQL內(nèi)部的觀測(cè)

第二個(gè)方向是外部資源的觀測(cè)

第三個(gè)方向是外部需求的改造

1.1 MySQL 內(nèi)部觀測(cè)

我們來(lái)看MySQL內(nèi)部的觀測(cè),常用的觀測(cè)手段是這樣的,從上往下看,第一部分是Processlist,看一下哪個(gè)SQL壓力不太正常,第二步是explain,解釋一下它的執(zhí)行計(jì)劃,第三步我們要做Profilling,如果這個(gè)SQL能再執(zhí)行一次的話, 就做一個(gè)Profilling,然后高級(jí)的DBA會(huì)直接動(dòng)用performance_schema ,MySQL 5.7 以后直接動(dòng)用sys_schema,sys_schema是一個(gè)視圖,里面有便捷的各類信息,幫助大家來(lái)診斷性能。再高級(jí)一點(diǎn),我們會(huì)動(dòng)用innodb_metrics進(jìn)行一個(gè)對(duì)引擎的診斷。

除了這些手段以外,大家還提出了一些亂七八糟的手段,我就不列在這了,這些是常規(guī)的一個(gè)MySQL的內(nèi)部的狀態(tài)觀測(cè)的思路。除了這些以外,MySQL還陸陸續(xù)續(xù)提供了一些暴露自己狀態(tài)的方案,但是這些方案并沒(méi)有在實(shí)踐中形成套路,原因是學(xué)習(xí)成本比較高。

1.2 外部資源觀測(cè)

外部資源觀測(cè)這部分,我引用了一篇文章,這篇文章的二維碼我貼在上面了。這篇文章是國(guó)外的一個(gè)神寫的,標(biāo)題是:60秒的快速巡檢,我們來(lái)看一下它在60秒之內(nèi)對(duì)服務(wù)器到底做了一個(gè)什么樣的巡檢。一共十條命令,這是前五條,我們一條一條來(lái)看。

1.uptime,uptime告訴我們這個(gè)機(jī)器活了多久,以及它的平均的負(fù)載是多少。

2.dmesg -T | tail,告訴我們系統(tǒng)日志里邊有沒(méi)有什么報(bào)錯(cuò)。

3.vmstat 1,告訴我們虛擬內(nèi)存的狀態(tài),頁(yè)的換進(jìn)換出有沒(méi)有問(wèn)題,swap有沒(méi)有使用。

4. mpstat -P ALL,告訴我們CPU壓力在各個(gè)核上是不是均勻的。

5.pidstat 1,告訴我們各個(gè)進(jìn)程的對(duì)資源的占用大概是什么樣子。

我們來(lái)看一下后五條:

首先是iostat-xz 1,查看IO的問(wèn)題,然后是free-m內(nèi)存使用率,之后兩個(gè)sar,按設(shè)備網(wǎng)卡設(shè)備的維度,看一下網(wǎng)絡(luò)的消耗狀態(tài),以及總體看TCP的使用率和錯(cuò)誤率是多少。最后一條命令top,看一下大概的進(jìn)程和線程的問(wèn)題。

這個(gè)就是對(duì)于外部資源的診斷,這十條命令揭示了應(yīng)該去診斷哪些外部資源。

1.3 外部需求改造

第三個(gè)診斷思路是外部的需求改造,我在這里引用了一篇文檔,這篇文檔是MySQL的官方文檔中的一章,這一章叫Examples of Common Queries,文檔中介紹了常規(guī)的SQL怎么寫, 給出了一些例子。文章的鏈接二維碼在slide上。

我們來(lái)看一下它其中提到的一個(gè)例子。

它做的事情是從一個(gè)表里邊去選取,這張表有三列,article、dealer、price,選取每個(gè)作者的最貴的商品列在結(jié)果集中,這是它的最原始的SQL,非常符合業(yè)務(wù)的寫法,但是它是個(gè)關(guān)聯(lián)子查詢。

關(guān)聯(lián)子查詢成本是很貴的,所以上面的文檔會(huì)教你快速地把它轉(zhuǎn)成一個(gè)非關(guān)聯(lián)子查詢,大家可以看到中間的子查詢和外邊的查詢之間是沒(méi)有關(guān)聯(lián)性的。

第三步,會(huì)教大家直接把子查詢拿掉,然后轉(zhuǎn)成這樣一個(gè)SQL,這個(gè)就叫業(yè)務(wù)改造,前后三個(gè)SQL的成本都不一樣,把關(guān)聯(lián)子查詢拆掉的成本,拆掉以后SQL會(huì)跑得非常好,但這個(gè)SQL已經(jīng)不能良好表義了,只有在診斷到SQL成本比較高的情況下才建議大家使用這種方式。

為什么它能夠把一個(gè)關(guān)聯(lián)子查詢拆掉呢?

這背后的原理是關(guān)系代數(shù),所有的SQL都可以被表達(dá)成等價(jià)的關(guān)系代數(shù)式,關(guān)系代數(shù)式之間有等價(jià)關(guān)系,這個(gè)等價(jià)關(guān)系通過(guò)變換可以把關(guān)聯(lián)子查詢拆掉。

上面的這篇文檔是一個(gè)大學(xué)的教材,它從頭教了關(guān)于代數(shù)和SQL之間的關(guān)系。然后一步步推導(dǎo)怎么去簡(jiǎn)化這句SQL。

第一,MySQL本身提供了很多命令來(lái)觀察MySQL自身的各類狀態(tài),大家從上往下檢一般能檢到SQL的問(wèn)題或者服務(wù)器的問(wèn)題。

第二,從服務(wù)器的角度,我們從巡檢的腳本角度入手,服務(wù)器的資源就這幾種,觀測(cè)手法也就那么幾種,我們把服務(wù)器的資源全部都觀察一圈就可以了。

第三,如果實(shí)在搞不定,需求方一定要按照數(shù)據(jù)庫(kù)容易接受的方式去寫SQL,這個(gè)成本會(huì)下降的非??欤@個(gè)是常規(guī)的MySQL慢的診斷思路。

mysql設(shè)計(jì)教學(xué)管理數(shù)據(jù)庫(kù):要求設(shè)計(jì)數(shù)據(jù)庫(kù)記錄每個(gè)同學(xué)在每門課程上的成績(jī),可以自定義場(chǎng)景?

首先定義三個(gè)表,學(xué)生(id,sno,name),課程(cid,cname),成績(jī)表(sid,id,cid,score),這樣,數(shù)據(jù)庫(kù)表基本定義完成,這個(gè)是數(shù)據(jù)庫(kù)操作的關(guān)鍵,接下來(lái)用sql語(yǔ)句給每張表插入數(shù)據(jù):例如學(xué)生表,id自增長(zhǎng)

insert into student(sno,sname) values(學(xué)號(hào),學(xué)生姓名)

參考一下。

數(shù)據(jù)庫(kù)的需求分析方法

數(shù)據(jù)庫(kù)設(shè)計(jì)需求

1. 需求概述

建立完善的數(shù)據(jù)庫(kù)結(jié)構(gòu)管理設(shè)備的基本參數(shù)、運(yùn)行狀態(tài)和各種工作計(jì)劃。

數(shù)據(jù)庫(kù)的框架和結(jié)構(gòu)必須根據(jù)設(shè)備和運(yùn)行狀態(tài)而設(shè)計(jì),方便提供強(qiáng)大的錄入、查詢、統(tǒng)計(jì)、分析和報(bào)表等各種功能操作,較好的反映平臺(tái)業(yè)務(wù)的基本情況和運(yùn)行狀況,滿足平臺(tái)的基本要求。

2. 外部設(shè)計(jì)需求

2.1 標(biāo)識(shí)符和狀態(tài)

數(shù)據(jù)庫(kù)表前綴:根據(jù)模塊名定義(如用戶模塊:sys_)

用戶名:root

密碼:待定

權(quán)限:全部

有效時(shí)間:開(kāi)發(fā)階段

說(shuō)明:系統(tǒng)正式發(fā)布后,可能更改數(shù)據(jù)庫(kù)用戶/密碼。

2.2 使用它的程序

本系統(tǒng)主要利用java作為后端的應(yīng)用開(kāi)發(fā)工具,使用MySQL作為后臺(tái)的數(shù)據(jù)庫(kù), Linux或Windows均可作為系統(tǒng)平臺(tái)。

2.3 約定

所有命名一定要具有描述性,杜絕一切拼音、或拼音英文混雜的命名方式。

字符集采用 UTF-8,請(qǐng)注意字符的轉(zhuǎn)換。

所有數(shù)據(jù)表第一個(gè)字段都是系統(tǒng)內(nèi)部使用主鍵列,自增字段,不可空,名稱為:id,確保不把此字段暴露給最終用戶。

除特別說(shuō)明外,所有日期格式都采用date格式。

除特別說(shuō)明外,所有字段默認(rèn)都設(shè)置不充許為空, 需要設(shè)置默認(rèn)值。

所有普通縮影的命名都是表名加設(shè)置縮影的字段名組合,例如用戶表User中name字段設(shè)置普通所以,則縮影名稱命名方式為user_name_index。

2.4 專門指導(dǎo)

對(duì)本系統(tǒng)的開(kāi)發(fā)者、使用這、測(cè)試員和維護(hù)人員,提出以下參考意見(jiàn):

在使用數(shù)據(jù)庫(kù)時(shí),首先要參考上面的約定內(nèi)容,做好軟件的安裝以及表格的建立。

數(shù)據(jù)庫(kù)的輸入統(tǒng)一采用鍵盤。對(duì)于數(shù)據(jù)庫(kù)的使用權(quán)限,請(qǐng)參考本系統(tǒng)其他相關(guān)文檔。

數(shù)據(jù)庫(kù)的后臺(tái)管理員沒(méi)用等級(jí)差異,可根據(jù)實(shí)際情況添加刪除管理員。

2.5 支持軟件

操作系統(tǒng): Linux / Windows

數(shù)據(jù)庫(kù)系統(tǒng):MySQL

查詢?yōu)g覽工具:Navicat Premium

命令行工具:mysql

注意:mysql 命令行環(huán)境下對(duì)中文支持不好,可能無(wú)法書(shū)寫帶有中文的 SQL 語(yǔ)句。

3. 結(jié)構(gòu)設(shè)計(jì)需求

3.1 概念結(jié)構(gòu)設(shè)計(jì)需求

概念數(shù)據(jù)庫(kù)的設(shè)計(jì)是進(jìn)行具體數(shù)據(jù)庫(kù)設(shè)計(jì)的第一步,概念數(shù)據(jù)庫(kù)設(shè)計(jì)的好壞直接影響到邏輯數(shù)據(jù)庫(kù)的設(shè)計(jì),影響到整個(gè)數(shù)據(jù)庫(kù)的好壞。

我們已經(jīng)得到了系統(tǒng)的數(shù)據(jù)流程圖和數(shù)據(jù)字典,現(xiàn)在就是要結(jié)合數(shù)據(jù)規(guī)范化的理論,用一種模型將用戶的數(shù)據(jù)要求明確地表示出來(lái)。

概念數(shù)據(jù)庫(kù)的設(shè)計(jì)應(yīng)該極易于轉(zhuǎn)換為邏輯數(shù)據(jù)庫(kù)模式,又容易被用戶所理解。概念數(shù)據(jù)庫(kù)設(shè)計(jì)中最主要的就是采用“實(shí)體-關(guān)系數(shù)據(jù)”模型來(lái)確定數(shù)據(jù)庫(kù)的結(jié)構(gòu)。

數(shù)據(jù)是表達(dá)信息的一種重要的量化符號(hào),是信息存在的一種重要形式。數(shù)據(jù)模型則是數(shù)據(jù)特征的一種抽象。它描述的是數(shù)據(jù)的共性,而不是描述個(gè)別的數(shù)據(jù)。一般來(lái)說(shuō),數(shù)據(jù)模型包含兩方面內(nèi)容:

數(shù)據(jù)的靜態(tài)特性:主要包括數(shù)據(jù)的基本結(jié)構(gòu)、數(shù)據(jù)間的關(guān)系和數(shù)據(jù)之間的相互約束等特性。

數(shù)據(jù)的動(dòng)態(tài)特性:主要包括對(duì)數(shù)據(jù)進(jìn)行操作的方法。

在數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì)中,建立反映客觀信息的數(shù)據(jù)模型,是設(shè)計(jì)中最為重要的,也最基本的步驟之一。

數(shù)據(jù)模型是連接客觀信息世界和數(shù)據(jù)庫(kù)系統(tǒng)數(shù)據(jù)邏輯組織的橋梁,也是數(shù)據(jù)庫(kù)設(shè)計(jì)人員與用戶之間進(jìn)行交流的共同基礎(chǔ)。概念數(shù)據(jù)庫(kù)中采用的實(shí)體-關(guān)系模型,與傳統(tǒng)的數(shù)據(jù)模型有所不同?!皩?shí)體-關(guān)系”模型是面向現(xiàn)實(shí)世界,而不是面向?qū)崿F(xiàn)方法的,它主要是用使用方便,因而在數(shù)據(jù)庫(kù)系統(tǒng)應(yīng)用的設(shè)計(jì)中,得到了廣泛應(yīng)用?!皩?shí)體-關(guān)系”模型可以用來(lái)說(shuō)明數(shù)據(jù)庫(kù)中實(shí)體的等級(jí)和屬性。

以下是實(shí)體-關(guān)系模型中的重要標(biāo)識(shí):

在數(shù)據(jù)庫(kù)中存在的實(shí)體;

實(shí)體的屬性;

實(shí)體之間的關(guān)系;

3.2 邏輯結(jié)構(gòu)設(shè)計(jì)需求

物理結(jié)構(gòu)設(shè)計(jì)需求

1)定義數(shù)據(jù)庫(kù)、表及字段的命名規(guī)范:

數(shù)據(jù)庫(kù)、表及字段的命名要遵守可讀性原則。

數(shù)據(jù)庫(kù)、表及字段的命名要遵守表意性原則。

數(shù)據(jù)庫(kù)、表及字段的命名要遵守長(zhǎng)名原則。

2)選擇合適的存儲(chǔ)引擎:

3)為表中的字段選擇合適的數(shù)據(jù)類型。

4)建立數(shù)據(jù)庫(kù)結(jié)構(gòu)

4. 運(yùn)用設(shè)計(jì)需求

4.1 表名的命名規(guī)范

表名以英文單詞、單詞縮寫、簡(jiǎn)寫、下劃線構(gòu)成,總長(zhǎng)度要求小于30位。

4.2 表字段的命名規(guī)范

字段名以英文單詞、單詞縮寫、簡(jiǎn)寫、下劃線構(gòu)成,總長(zhǎng)度要求不超過(guò)30位。

字段名以名詞或名詞短語(yǔ),字段采用單數(shù)形式。若表名由多個(gè)單詞組成,則取各個(gè)單詞的縮寫組成,單詞縮寫間使用下劃線作為分隔。

若某個(gè)字段是引用某個(gè)表的外鍵,則字段名應(yīng)盡量與源表的字段名保持一致,一面混淆。

5. 安全保密設(shè)計(jì)需求

5.1 防止用戶直接操作數(shù)據(jù)庫(kù)的方法

通過(guò)把關(guān)鍵應(yīng)用服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行分離,防止用戶對(duì)數(shù)據(jù)庫(kù)服務(wù)器的直接操作,保證數(shù)據(jù)庫(kù)安全。

5.2 應(yīng)用系統(tǒng)的用戶口令進(jìn)行加密

在軟件系統(tǒng)中,對(duì)于數(shù)據(jù)的保護(hù)、業(yè)務(wù)操作的許可是通過(guò)識(shí)別用戶身份和權(quán)限來(lái)完成的。用戶口令相比較,相同的話系統(tǒng)將該用戶的操作權(quán)限分配給用戶,用戶再根據(jù)所分配的權(quán)限對(duì)系統(tǒng)進(jìn)行操作。

由以上過(guò)程可知,用戶口令在傳輸過(guò)程中容易被竊取泄漏,另外如果數(shù)據(jù)庫(kù)被非法進(jìn)入則其中保存的口令能夠被非法查看。因此,在傳輸過(guò)程中和數(shù)據(jù)庫(kù)中的口令記錄字段不應(yīng)使用明文傳遞和保存,應(yīng)該在口令被傳遞前對(duì)其明文口令使用有效的主流技術(shù),對(duì)傳輸數(shù)據(jù)進(jìn)行加密部分描述的加密算法進(jìn)行加密,在加密后傳輸?shù)较到y(tǒng)。系統(tǒng)將用戶提交的經(jīng)過(guò)加密的口令數(shù)據(jù)保存的加密口令進(jìn)行比較,相一致則進(jìn)行后續(xù)操作。

分享名稱:mysql怎么寫需求分析 mysql如何設(shè)計(jì)數(shù)據(jù)庫(kù)
URL鏈接:http://www.rwnh.cn/article2/ddiooic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、微信小程序、網(wǎng)站排名、移動(dòng)網(wǎng)站建設(shè)、軟件開(kāi)發(fā)、面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
红安县| 永兴县| 大丰市| 扶余县| 尉犁县| 宿松县| 宜良县| 康定县| 彩票| 福海县| 盐津县| 石泉县| 呈贡县| 济南市| 陵川县| 泰安市| 冀州市| 安平县| 虎林市| 涿州市| 通道| 商河县| 隆尧县| 张家港市| 绥棱县| 涿鹿县| 新丰县| 大方县| 晋城| 大宁县| 灵石县| 四平市| 金坛市| 绍兴县| 江陵县| 邵阳市| 佳木斯市| 华安县| 临沂市| 承德市| 科尔|