日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

数据库知识整理笔记

發(fā)布時間:2023/12/20 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库知识整理笔记 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

為什么80%的碼農都做不了架構師?>>> ??

事務的主要特性:原子性、一致性、獨立性和持久性(ACID)

數(shù)據(jù)庫應用優(yōu)化

1、基本語句優(yōu)化10個原則

1)盡量避免在列上進行運算,這樣會導致索引失效

2)使用join時,應該用小結果集驅動大結果集。同時把復雜的join查詢拆分成多個query

3)注意like模糊查詢的使用,避免%%

4)僅列出需要查詢的字段,這對速度不會有明顯的影響,主要考慮節(jié)省內存

5)使用批量插入語句節(jié)省交互

6)limit的基數(shù)比較大時使用between

7)不要使用rand函數(shù)獲取多條隨機記錄

8)避免使用NULL

9)不要使用count(id),應該使用count(*)

10)不要做無謂的排序,應盡可能在索引中完成排序

2、mysql索引建立和使用基本原則

1)合理設計和使用索引

2)在關鍵字的索引上,建與不建索引,查詢速度相差近100倍

3)差的索引和沒有索引效果一樣

4)索引并非越多越好,因為維護索引需要成本

5)每個表的索引應在5個以下,應合理利用部分索引和聯(lián)合索引

6)不在結果集中的結果單一的列上建索引

7)建索引的字段結果集最好分布均勻,或者符合正態(tài)分布

3、服務器和配置優(yōu)化

選擇存儲引擎的基本原則:

1)采用MyISAM引擎:讀/寫>100:1且update相對較少;并發(fā)不高,不需要事務;表數(shù)據(jù)量小;硬件資源有限

2)采用InnoDB引擎:R/W比較小,頻繁更新大字段;表數(shù)據(jù)量超過1000萬,并發(fā)高;安全性和可用性要求高

3)采用Memory引擎:有足夠的內存;對數(shù)據(jù)一致性要求不高;需要定期歸檔的數(shù)據(jù)

mysql服務器調整優(yōu)化:

1)關閉不必要的二進制日志和慢查詢日志,僅在內存足夠或開發(fā)調試時打開他們

2)適度使用query cache

3)增加mysql允許的最大連接數(shù)(show variables like 'max_connections')

4)對myisam表適當增加key_buffer_size

mysq瓶頸及應對措施:

1)增加mysql配置中的buffer和cache的數(shù)值,增加服務器cpu數(shù)量和內存的大小

2)使用第三方引擎或衍生版本

3)遷移其他數(shù)據(jù)庫

數(shù)據(jù)庫分區(qū)

概念:所謂分區(qū)就是把一個數(shù)據(jù)表的文件和索引分散存儲在不同的物理文件中。mysql支持的分區(qū)類型包括:range(常用)、list、hash、key

分區(qū)的注意事項

1)主鍵或者唯一索引必須包含分區(qū)字段

2)很多時候,使用分區(qū)就不要再使用主鍵,可能影響性能

3)只能通過int類型的字段或者返回int類型的表達式來分區(qū),通常用year或to_days等函數(shù)

4)每個表最多1024個分區(qū),不可能無限制擴展分區(qū),而且過度使用分區(qū)往往會消耗大量系統(tǒng)內存

5)采用分區(qū)的表不支持外建

6)分區(qū)后,可能造成索引失效,需要驗證分區(qū)可行性

數(shù)據(jù)庫分表

概念:分表思想和分區(qū)類似,區(qū)別是:分區(qū)是把一個邏輯文件分成幾個物理文件后進行存儲,而分表則是把原先宇哥表拆分成幾個表。進行分表查詢時,可以union或者做一個視圖。分表又分為垂直切分和水平切分,其中水平切分最常用

mysql高級應用

1、mysql自增長序列(auto_increment)

可能需要使用序列的情況:

1)業(yè)務復雜,需要定制和控制主鍵時

2)希望手工維護自增長,方便數(shù)據(jù)遷移

3)需要業(yè)務上一個有意義的主鍵時,比如單據(jù)號

4)當事務跨多表,期望事務可靠性

5)主鍵很明確的需要和其他表關聯(lián)時

6)期望主鍵是唯一的,不需要重復利用時

2、msql視圖

概念:視圖是一個虛擬表,其內容由查詢定義。對其中所引用的基礎表來說,視圖的作用類似于篩選,篩選

當前或者其他數(shù)據(jù)庫的一個或多個表

創(chuàng)建視圖的注意事項:

1)select語句不能包含from子句中的子查詢

2)select語句不能引用系統(tǒng)或用戶變量

3)select語句不能引用預處理語句

4)在存儲子程序內,定義不能引用子程序的參數(shù)或局部變量

5)在定義中引用的表或視圖必須存在

6)在定義中不能引用temporary表,不能創(chuàng)建temporary

7)在視圖定義中命名的表必須已存在

8)不能將觸發(fā)程序與視圖關聯(lián)在一起

9)在試圖定義中允許使用order by,但是,如果從特定視圖進行了選擇,而視圖又使用了具有自己的order by的語句,他將被忽略

10)不能給視圖添加索引

11)視圖通常不允許更新

3、mysql存儲過程和事件調度

概念:利用sql語言完成復雜的數(shù)據(jù)庫層業(yè)務操作,通過編寫存儲過程來實現(xiàn)

創(chuàng)建存儲過程步驟:

1)確定輸入/輸出參數(shù)和類型(IN表示輸入?yún)?shù),$tname是參數(shù)名,varchar(20)是參數(shù)類型)

2)定義變量和賦值(使用declare關鍵字定義變量,set關鍵字用來賦值)

3)過程的主體部分,可以是各種運算,也可以是數(shù)據(jù)庫操作

4)程序的返回值。可以有返回值,也可以無返回值

優(yōu)缺點:存儲過程能提升效率,還具有模塊化、易于復用、可以移植等特點,但mysql存儲過程沒有強大的調試工具,不易維護。

4、mysql模擬消息隊列:

隊列概念:隊列和棧一樣,是一種線性表結構,不過隊列是一種先進先出的數(shù)據(jù)結構。隊列只允許在后端進行插入操作,在前端進行刪除操作。

消息隊列:在消息的傳輸過程中保存消息的容器

消息隊列管理器:將消息從它的源中繼到它的目標時充當中間人的角色

隊列作用:主要提供路由并保證筱梓的傳遞,如果發(fā)送消息時接收者不可用,消息隊列會保留消息,直到成功的傳遞。

消息隊列作用:可以很好的異步處理數(shù)據(jù)傳送和存儲,當頻繁地向數(shù)據(jù)庫中插入數(shù)據(jù)時,就可采取消息隊列異步插入。另外,可將較慢的處理邏輯、有并發(fā)數(shù)量限制的處理邏輯,通過消息隊列放在后臺處理。如:視頻轉換、發(fā)送手機短信

5、sql注入漏洞與防范:

1)如果是整型變量或字段,使用intval()函數(shù)把所有傳入?yún)?shù)轉化為一個數(shù)值

2)對于字符型變量,用addslashes()會把所有的單引號、雙引號、反斜線和空字符轉換為含有反斜線的溢出字符

3)轉義或過濾一些特殊字符

4)保護表結構等關鍵信息

5)任何情況下做好安全備份

轉載于:https://my.oschina.net/u/863367/blog/862521

總結

以上是生活随笔為你收集整理的数据库知识整理笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。