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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

sql共享功能目录无法更改_大企业数据库服务首选!AliSQL这几大企业级功能你不可不知...

發(fā)布時間:2023/11/30 数据库 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sql共享功能目录无法更改_大企业数据库服务首选!AliSQL这几大企业级功能你不可不知... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

MySQL代表了開源數(shù)據(jù)庫的快速發(fā)展,從2004年前后的Wiki、WordPress等輕量級Web 2.0應(yīng)用起步,到2010年阿里巴巴在電商及支付場景大規(guī)模使用MySQL數(shù)據(jù)庫,再到2012年開始阿里云RDS for MySQL為成千上萬家客戶提供可靠的關(guān)系數(shù)據(jù)庫服務(wù),積累了來自內(nèi)外部功能、性能、安全方面的眾多需求,培養(yǎng)了一支強(qiáng)勁的MySQL研發(fā)團(tuán)隊(duì),并打造了面向企業(yè)場景的AliSQL分支,高效演進(jìn)并穩(wěn)定地服務(wù)著內(nèi)外部關(guān)鍵業(yè)務(wù)場景。

讓我們來一起看一下AliSQL中面向企業(yè)場景的設(shè)計及功能

1,MySQL 80 Compatiable

MySQL 80有5個非常好的企業(yè)級功能,來逐一看一下:

Atomic DDL,MySQL 80去掉了表結(jié)構(gòu)frm文件,實(shí)現(xiàn)了元數(shù)據(jù)信息字典化,可以保證DDL操作處理或回滾干凈,避免了表刪除不干凈的情況。

Instant Add Column,元數(shù)據(jù)字典化后,向表最后面加列(無默認(rèn)值)時,可以只更改數(shù)據(jù)字典,而不需要更改表數(shù)據(jù),實(shí)現(xiàn)了極快速的加列。

Window Function,窗口函數(shù)可以用來快速實(shí)現(xiàn)復(fù)雜的報表,在許多企業(yè)應(yīng)用場景中都會出現(xiàn)。

Temp Engine,執(zhí)行特別復(fù)雜的SQL時,需要用到內(nèi)存之外的臨時空間,以前版本會動態(tài)地創(chuàng)建和刪除文件,而在MySQL 80中,使用了集中式的Temp Engine,避免不停地創(chuàng)建和刪除文件,有效降低了文件系統(tǒng)的壓力。

Hash Join,MySQL 8018中實(shí)現(xiàn)了Hash Join,可以加快多表(三表)以上關(guān)聯(lián)的SQL性能,在企業(yè)場景中由于業(yè)務(wù)邏輯復(fù)雜,多表關(guān)聯(lián)是常態(tài),絕對的企業(yè)級功能。

我們在2019年推出了基于MySQL 80版本的AliSQL版本,遠(yuǎn)遠(yuǎn)領(lǐng)先于同行。

2、Dynamic Thread Pool

企業(yè)級場景(包括互聯(lián)網(wǎng)與非互聯(lián)網(wǎng)場景)的商業(yè)數(shù)字化程度越來越高,應(yīng)用場景越來越豐富,RDS數(shù)據(jù)庫如何在有限資源(4c/8c規(guī)格,云上彈性降低企業(yè)成本)的情況下提供高質(zhì)量服務(wù),會面臨以下挑戰(zhàn):

如何在有限的資源下,支持更多的數(shù)據(jù)庫連接數(shù)?

如何支持更高的短連接能力?

如何在有限的資源下,提高資源的使用效率,提升性能?

如何進(jìn)行并發(fā)控制或隔離,保證核心業(yè)務(wù)邏輯的穩(wěn)定性?

Dynamic Thread Pool可以很好地解決上述問題,

采用Listener & Worker機(jī)制,將所有請求放到Worker隊(duì)列中,由共享的Worker線程來執(zhí)行不同用戶的請求,從而不需要每個客戶端會話都創(chuàng)建一個后臺線程(非Dynamic Thread Pool)來執(zhí)行請求,比如1000個客戶端連接發(fā)起請求,服務(wù)器端只需要數(shù)十個Worker線程即可,而不需要創(chuàng)建1000個線程,從而可以在有限資源內(nèi)創(chuàng)建更多的連接。

由于每個連接后面并不對應(yīng)固定的線程,創(chuàng)建新連接時沒有線程的操作,因此建立新連接的成本大大降低,從而可以提供更高和更穩(wěn)定的連接創(chuàng)建能力。

通過控制了有限資源內(nèi)的線程數(shù),減少了線程切換,有效降低了SYS CPU的使用,提升了CPU的資源使用效率。在高并發(fā)的sysbench point select測試中,Dynamic Thread Pool可以提升10%左右的性能;在低并發(fā)時,Dynamic Thread Pool可以動態(tài)切換回專用模式,即每個連接都有專用的Worker對應(yīng),從而保證高低并發(fā)下都有極好的性能。

在數(shù)據(jù)庫中有讀寫操作,SQL操作也可以分為簡單操作和復(fù)雜操作,為了防止相互影響,Dynamic Thread Pool設(shè)計了多個隊(duì)列,按SQL的操作成本將SQL進(jìn)行分類,各自進(jìn)入不同的隊(duì)列,并在隊(duì)列上進(jìn)行并發(fā)的控制,從而可以隔離不同類型操作的相互影響。比如說核心業(yè)務(wù)邏輯中都是簡單查詢,新建應(yīng)用未經(jīng)評審的復(fù)雜SQL就不會影響核心邏輯。

Dynamic Thread Pool可以動態(tài)啟停,不需要重啟數(shù)據(jù)庫實(shí)例。這是AliSQL Dynamic Thread Pool一個非常重大的技術(shù)創(chuàng)新與突破。

Dynamic Thread Pool已經(jīng)在RDS 5.6/5.7/8.0版本上線,并已經(jīng)默認(rèn)開啟,所有用戶和客戶都可以受益。TPCC模型最接近企業(yè)核心業(yè)務(wù)場景,在1024或2048客戶端并發(fā)的TPCC測試中,Dynamic Thread Pool可以提升50%-100%左右的TpmC,并節(jié)約10%到20%的CPU資源消耗,給阿里云所有客戶帶來實(shí)實(shí)在在的技術(shù)紅利。

3、Index Mutex Tuning

TPCC模型最接近企業(yè)核心業(yè)務(wù)場景,對此場景的優(yōu)化可以讓企業(yè)應(yīng)用受益。在TPCC的壓力測試中,發(fā)現(xiàn)Index的鎖非常重,在節(jié)點(diǎn)分裂時會阻塞所有的其他操作。AliSQL對此進(jìn)行了優(yōu)化,有效地降低了壓測過程中,索引節(jié)點(diǎn)分裂的成本,大大地提升了TPCC場景的處理能力。在全內(nèi)存的測試中,單機(jī)達(dá)到了39W的TpmC,相對于原生版本提升35-50%不等(大規(guī)格測試,5.6提升35%、5.7提升40%、8.0進(jìn)升45%)。

此優(yōu)化已在RDS 56/57/80上同步優(yōu)化發(fā)布上線。

4、TDE & SM4

RDS 5.6/5.7/8.0都已經(jīng)全線支持,并且支持SM4加密算法,可以確保客戶數(shù)據(jù)的安全。

5、Performance Insight

應(yīng)用側(cè)的SQL優(yōu)化對系統(tǒng)及業(yè)務(wù)的優(yōu)化至關(guān)重要,原生的MySQL中缺少行之有效的監(jiān)控數(shù)據(jù),AliSQL結(jié)合不同數(shù)據(jù)庫的經(jīng)驗(yàn),并結(jié)合內(nèi)部外部客戶的需求,在SQL性能這塊做了豐富的擴(kuò)展,包含以下五個方面的擴(kuò)展:

  • table_stats,記錄每個表增刪除改查的行數(shù),可以快速地了解現(xiàn)有系統(tǒng)中的數(shù)據(jù)存取行為,判斷業(yè)務(wù)的核心表,判斷哪些表適合來作緩存處理。
  • index_stats,記錄用到的索引以及索引被使用的頻率,可以快速地了解索引的使用情況,判斷哪些索引是多余的,判斷哪些索引是核心的索引。
  • Performance Point,記錄了每個SQL的細(xì)粒度性能數(shù)據(jù),包括SQL語句的時間(包括消耗時間、執(zhí)行時間、Server層MDL鎖的時間、事務(wù)鎖的時間)、SQL IO的信息(包括這條SQL引起的數(shù)據(jù)讀、數(shù)據(jù)寫、日志生成、內(nèi)存訪問、物理讀寫的量及IO時間)、以及內(nèi)核層面的鎖(包括Mutex、RW Lock)的次數(shù)和時間。很容易找到值得優(yōu)化的SQL語句,如果有一定的源代碼能力,也可以分析和改進(jìn)MySQL的鎖機(jī)制。
  • Performance Agent,使用內(nèi)置Daemon程序,在同一時間點(diǎn)收集不同唯度(CPU、內(nèi)存、網(wǎng)絡(luò)、磁盤IO、Server、InnoDB、Linux Kernel、File System)的關(guān)鍵性能數(shù)據(jù),每秒收集一次,以格式化文本方式在后臺記錄,便于事后進(jìn)行性能分析,同時也是內(nèi)存表的方式提供訪問,方便客戶直接使用Grafana等工具來展示RDS數(shù)據(jù)庫性能曲線。
  • IO_STATISTICS,記錄實(shí)例級各種不同IO的總量及時間,默認(rèn)每2秒一個值(可配置),可以直接使用Grafana等工具來展示。

在仔細(xì)分析原生Performance Schema后,AliSQL中增加了這些額外的性能相關(guān)的數(shù)據(jù),如實(shí)地反映了系統(tǒng)的運(yùn)行情況,方便我們進(jìn)行事后性能問題診斷,也方便了客戶進(jìn)行SQL性能分析,也可以讓第三方基于這些性能數(shù)據(jù)來為客戶提供更好的性能優(yōu)化服務(wù)。

6、Async File Purge

在文件系統(tǒng)中刪除一個特別大的文件(Drop Table/Partition、Truncate Table/Partition)時,可能會鎖定整個文件系統(tǒng),導(dǎo)致同一個文件系統(tǒng)上的其他操作無法進(jìn)行,阻塞整個實(shí)例。AliSQL中對這種行為進(jìn)行了優(yōu)化,當(dāng)接到刪除表或分區(qū)的操作時,會記一個文件異步清理的任務(wù),將表或分區(qū)的操作先做完,然后由后臺線程以相對溫和的方式進(jìn)行清理。其原理是將大文件一步一步變小,到某個安全大小后,才徹底刪除文件。

7、Slow Log Rotate

某些業(yè)務(wù)場景下,會產(chǎn)生大量的慢SQL語句,會被記錄在慢日志中,而原生的MySQL一直使用單個文件機(jī)制會一直保持Slow Log文件打開,導(dǎo)致文件變得特別大(可高在上百GB),需要在關(guān)閉MySQL實(shí)例的情況下,才能對Slow Log文件進(jìn)行維護(hù),非常地不友好。

AliSQL對此作出了改進(jìn),設(shè)計了Slow Log切換機(jī)制,可以定時或到指定大小后進(jìn)行切換(切換指令由外部觸發(fā)),避免需要重啟數(shù)據(jù)庫實(shí)例來維護(hù)Slow Log文件(比如釋放Slow Log空間)。其間還修復(fù)了以CSV格式存放Slow Log時,SQL執(zhí)行時間范圍超過35天(通常是Binlog Dump命令)引起的損壞問題。

8、SQL Outline

SQL Hint是非常有效的優(yōu)化手段,AliSQL對SQL Hint做了功能擴(kuò)展,可以在運(yùn)行過程中將SQL計算中的路徑信息用相應(yīng)的SQL Hint進(jìn)行持久化保存,以保證執(zhí)行計劃的穩(wěn)定性。可以有效應(yīng)對以下場景下的SQL執(zhí)行計劃變更:

  • 數(shù)據(jù)庫版本升級,優(yōu)化器行為會發(fā)生變化,SQL計算計劃可能變好也可能變壞。
  • DDL操作,新建索引后,會導(dǎo)致原有的SQL執(zhí)行計劃發(fā)生變化。
  • 統(tǒng)計信息發(fā)生變化,重新收集或人工設(shè)置后,SQL執(zhí)行計劃可能發(fā)生變化。

對于核心業(yè)務(wù)的SQL,應(yīng)當(dāng)使用SQL Outline進(jìn)行固化,避免SQL執(zhí)行計劃變壞。

AliSQL還提供API進(jìn)行SQL Hint編輯,即可以手工給SQL加一個Hint,進(jìn)行透明的SQL優(yōu)化,可以在無法更改應(yīng)用程序代碼的情況下進(jìn)行SQL優(yōu)化。并在此基礎(chǔ)上,與AliSQL其他的優(yōu)化功能進(jìn)行集成,比如Statement Queue、Query Cache(研發(fā)中)等,可以通過在SQL Outline中指定Hint來啟用Statement Queeu的并發(fā)控制,或啟用Query Cache,實(shí)現(xiàn)對應(yīng)用透明的SQL優(yōu)化。

9、Binlog XA Tuning

MySQL的邏輯日志(Binlog)給數(shù)據(jù)訂閱帶來了極大的便捷性,但也給性能帶來了負(fù)面影響。在服務(wù)客戶的過程中,我們發(fā)現(xiàn)企業(yè)場景對性能的要求越來越高,便對啟用Binlog后的事務(wù)提交機(jī)制進(jìn)行了重大的技術(shù)突破,在不影響B(tài)inlog的前提下,去除了XA機(jī)制帶來的所有負(fù)面性能影響,相較于原生的MySQL,事務(wù)處理性能提升將近一倍。更實(shí)現(xiàn)了事務(wù)提交的Pipeline機(jī)制,交由Dynamic Thread Pool的線程去回復(fù)用戶事務(wù)提交結(jié)果,進(jìn)一步降底了線程池的線程數(shù),提升了系統(tǒng)處理效率。

10、DDL Recycle Bin

在MySQL中DDL語句是無法回滾的,因此Drop/Truncate表或分區(qū)的操作會變得極期危險,在商業(yè)數(shù)據(jù)庫中也是如此。

Oracle在10g中加入了回收站的功能,可以將Drop/Truncate的表或分區(qū)先放到回收站中,后續(xù)根據(jù)空間的使用情況,按先進(jìn)先出的策略自動回收。這樣就可以在Drop/Truncate誤操作手,從回收站中快速恢復(fù)數(shù)據(jù),而不需要進(jìn)行實(shí)例基于時間點(diǎn)的恢復(fù)來找回誤操作的表,AliSQL在8.0上也實(shí)現(xiàn)了此回收站功能。

AliSQL還有其他的企業(yè)級功能,例如Sequence引摯、Statement Queue等,在這里不一一詳細(xì)解釋。

從業(yè)務(wù)中找需求,從技術(shù)中找需求,從運(yùn)行維護(hù)中找需求,從合作伙伴中找需求,所有的需求方都是我們的客戶,一直致力于讓AliSQL更加開放更加面向企業(yè)級應(yīng)用。

大型企業(yè)數(shù)據(jù)庫服務(wù)首選!

專屬主機(jī)組RDS MySQL服務(wù)重磅發(fā)布!

1月9日15:00 — 17:00

RDS專屬主機(jī)組和ECS專有宿主機(jī)

舉辦聯(lián)合發(fā)布會!

點(diǎn)擊下方

阿里云登錄 - 歡迎登錄阿里云,安全穩(wěn)定的云計算服務(wù)平臺

立即預(yù)約!

(需登陸阿里云賬號哦!)

總結(jié)

以上是生活随笔為你收集整理的sql共享功能目录无法更改_大企业数据库服务首选!AliSQL这几大企业级功能你不可不知...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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