国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

MySQL中比較常用的優化手段

Linux愛好者 ? 來源:非科班的科班 ? 作者:非科班的科班 ? 2021-03-10 10:05 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、準備表數據

咱們建一張用戶表,表中的字段有用戶ID、用戶名、地址、記錄創建時間,如圖所示

e5d10ad6-8103-11eb-8b86-12bb97331649.png

OK,接下來準備寫一個存儲過程插入一百萬條數據

CREATE TABLE `t_user` (

`id` int NOT NULL,

`user_name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,

`address` varchar(255) DEFAULT NULL,

`create_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

DELIMITER ;;

CREATE PROCEDURE user_insert()

BEGIN

DECLARE i INT DEFAULT 0;

WHILE i《1000000

DO

INSERT INTO t_user(id, user_name, address, create_time) VALUES (i, CONCAT(‘mayun’,i), ‘浙江杭州’, now());

SET i=i+1;

END WHILE ;

commit;

END;;

CALL user_insert();

插入完后咱們看看數據條數

e5e1fcce-8103-11eb-8b86-12bb97331649.png

二、優化方式

1.分頁查詢優化

OK,咱們看下分頁limit到一定值時的耗時是多少

limit 1000時

e6052988-8103-11eb-8b86-12bb97331649.png

limit 10000時

e635f64e-8103-11eb-8b86-12bb97331649.png

limit 100000時

e6539154-8103-11eb-8b86-12bb97331649.png

limit 1000000時

e66ca4be-8103-11eb-8b86-12bb97331649.png

可以看到limit值越大,耗時越長,這還只是一百萬數據,要是千萬級、億級呢?

OK不廢話,咱們馬上進行分頁優化

子查詢優化

e6887176-8103-11eb-8b86-12bb97331649.png

-

可以看到比起之前 limit 1000000時的0.218s 效率提高了很多

使用JOIN分頁

e6a5d810-8103-11eb-8b86-12bb97331649.png

-

可以看到比起之前 limit 1000000時的0.218s 效率也同樣提高了很多

使用前一次查詢的最大ID

e6c1ed98-8103-11eb-8b86-12bb97331649.png

可以看到這種方法效率最高,但依賴于需要知道最大ID,這種適合點擊下一頁查詢(類似于滾動加載數據)的場景

通過偽列對ID進行分頁

e6e273b0-8103-11eb-8b86-12bb97331649.png

然后可以開啟多個線程去進行最高效率查詢語句的批量查詢操作 0~10000,10001-20000.。.. 這樣子的話可以快速把全量數據查詢出來同步至緩存中。

分頁優化總結: 使用前一次查詢的最大ID進行查詢優化是效率最高的方法,但這種方法只適用于下一頁點擊的這種操作,對于同步全量數據來說建議的方式使用偽列對ID進行分頁,然后開啟多個線程同時查詢,把全量數據加載到緩存,以后面試官問你如何 快速獲取海量數據并加載到緩存 你該知道怎么回答了吧。

2.普通索引優化

先來看沒索引優化的情況下的查詢效率

e70f4142-8103-11eb-8b86-12bb97331649.png

可以看到這時沒用索引的情況,用了0.305S接下來看看加了索引后的結果

普通索引優化

e74f297e-8103-11eb-8b86-12bb97331649.png

e75e053e-8103-11eb-8b86-12bb97331649.png

只需要0.024S,我們可以EXPLAIN看下

e7792cb0-8103-11eb-8b86-12bb97331649.png

可以看到使用了普通索引后查詢效率明顯增加

3.復合索引優化

復合索引什么時候用?為什么要用?圍繞著這兩問題,咱們先來說說復合索引什么時候用

單表中查詢、條件語句中具有較多個字段

使用索引會影響寫的效率,需要研究建立最優秀的索引

我們這里建議一個復合索引

e7d3740e-8103-11eb-8b86-12bb97331649.png

MySQL建立復合索引時實際建立了(user_name)、(user_name,address)、(user_name,address,create_time)三個索引,我們都知道每多一個索引,都會增加寫操作的開銷和磁盤空間的開銷,對于海量數據的表,這可是不小的開銷,所以你會發現我們在這里使用復合索引一個頂三個,又能減少寫操作的開銷和磁盤空間的開銷。

當我們select user_name,address,create_time from t_user where user_name=xx and address = xxx時,MySQL可以直接通過遍歷索引取得數據,無需回表,這減少了很多的隨機IO操作。所以,在真正的實際應用中,這就是覆蓋索引,是復合索引中主要的提升性能的優化手段之一。

4.SQL查詢優化

避免使用OR,看看例子

e7ef15a6-8103-11eb-8b86-12bb97331649.png

可以看到這條語句沒有使用到索引,是因為當or左右查詢字段只有一個是索引,該索引失效,只有當or左右查詢字段均為索引時,才會生效。

不要使用like ‘%xx’ %在左邊時索引失效

e80376c2-8103-11eb-8b86-12bb97331649.png

3. 使用復合索引時沒有遵循最左匹配原則

e819abb8-8103-11eb-8b86-12bb97331649.png

ref:這個連接類型只有在查詢使用了不是惟一或主鍵的鍵或者是這些類型的部分(比如,利用最左邊前綴)時發生。沒有值說明沒有利用最左前綴原則

再來看個使用了最左前綴的例子

e82b80c2-8103-11eb-8b86-12bb97331649.png

4. 不要讓數據類型出現隱式轉化

可以看以下兩個例子

e83ba20e-8103-11eb-8b86-12bb97331649.png

e85b1d1e-8103-11eb-8b86-12bb97331649.png

5. 不要在索引字段上使用not,《》,!=,一樣會導致索引失效

e87bff5c-8103-11eb-8b86-12bb97331649.png

e89bdb74-8103-11eb-8b86-12bb97331649.png

e8bdb366-8103-11eb-8b86-12bb97331649.png

6. 分解關聯查詢 例如這條語句

e8cffd5a-8103-11eb-8b86-12bb97331649.png

可以分解成

e8ebb50e-8103-11eb-8b86-12bb97331649.png

7.小表驅動大表 即小的數據集驅動大的數據集。如:以t_user,t_order兩表為例,兩表通過 t_user的id字段進行關聯。

當 t_order表的數據集小于t_user表時,用 in 優化 exist,使用 in,兩表執行順序是先查 t_order 表,再查t_user表

select * from t_user where id in (select user_id from t_order)

當 t_user 表的數據集小于 t_order 表時,用 exist 優化 in,使用 exists,兩表執行順序是先查 t_user 表,再查 t_order 表

select * from t_user where exists (select 1 from B where t_order.user_id= t_user.id)

5.事務優化

首先了解下事務的隔離級別,數據庫共定義了四種隔離級別:

Serializable:可避免臟讀、不可重復讀、虛讀情況的發生。(串行化)

Repeatable read:可避免臟讀、不可重復讀情況的發生。(可重復讀)

Read committed:可避免臟讀情況發生(讀已提交)。

Read uncommitted:最低級別,以上情況均無法保證。(讀未提交)

可以通過 set transaction isolation level 設置事務隔離級別來提高性能

6.數據庫性能優化

開啟查詢緩存

在解析一個查詢語句前,如果查詢緩存是打開的,那么MySQL會檢查這個查詢語句是否命中查詢緩存中的數據。如果當前查詢恰好命中查詢緩存,在檢查一次用戶權限后直接返回緩存中的結果。這種情況下,查詢不會被解析,也不會生成執行計劃,更不會執行。MySQL將緩存存放在一個引用表(不要理解成table,可以認為是類似于HashMap的數據結構),通過一個哈希值索引,這個哈希值通過查詢本身、當前要查詢的數據庫、客戶端協議版本號等一些可能影響結果的信息計算得來。所以兩個查詢在任何字符上的不同(例如:空格、注釋),都會導致緩存不會命中。

如果查詢中包含任何用戶自定義函數、存儲函數、用戶變量、臨時表、mysql庫中的系統表,其查詢結果都不會被緩存。比如函數NOW()或者CURRENT_DATE()會因為不同的查詢時間,返回不同的查詢結果,再比如包含CURRENT_USER或者CONNECION_ID()的查詢語句會因為不同的用戶而返回不同的結果,將這樣的查詢結果緩存起來沒有任何的意義。

既然是緩存,就會失效,那查詢緩存何時失效呢?MySQL的查詢緩存系統會跟蹤查詢中涉及的每個表,如果這些表(數據或結構)發生變化,那么和這張表相關的所有緩存數據都將失效。正因為如此,在任何的寫操作時,MySQL必須將對應表的所有緩存都設置為失效。如果查詢緩存非常大或者碎片很多,這個操作就可能帶來很大的系統消耗,甚至導致系統僵死一會兒。而且查詢緩存對系統的額外消耗也不僅僅在寫操作,讀操作也不例外:

任何的查詢語句在開始之前都必須經過檢查,即使這條SQL語句永遠不會命中緩存

如果查詢結果可以被緩存,那么執行完成后,會將結果存入緩存,也會帶來額外的系統消耗

基于此,我們要知道并不是什么情況下查詢緩存都會提高系統性能,緩存和失效都會帶來額外消耗,只有當緩存帶來的資源節約大于其本身消耗的資源時,才會給系統帶來性能提升。但要如何評估打開緩存是否能夠帶來性能提升是一件非常困難的事情,也不在本文討論的范疇內。如果系統確實存在一些性能問題,可以嘗試打開查詢緩存,并在數據庫設計上做一些優化,比如:

批量插入代替循環單條插入 。 合理控制緩存空間大小,一般來說其大小設置為幾十兆比較合適 。 可以通過SQL\_CACHE和SQL\_NO\_CACHE來控制某個查詢語句是否需要進行緩存 最后的忠告是不要輕易打開查詢緩存,特別是寫密集型應用。如果你實在是忍不住,可以將query\_cache\_type設置為DEMAND,這時只有加入SQL\_CACHE的查詢才會走緩存,其他查詢則不會,這樣可以非常自由地控制哪些查詢需要被緩存。 當然查詢緩存系統本身是非常復雜的,這里討論的也只是很小的一部分,其他更深入的話題,比如:緩存是如何使用內存的?如何控制內存的碎片化?事務對查詢緩存有何影響等等,讀者可以自行閱讀相關資料,這里權當拋磚引玉吧。 **語法解析和預處理**

MySQL通過關鍵字將SQL語句進行解析,并生成一顆對應的解析樹。這個過程解析器主要通過語法規則來驗證和解析。比如SQL中是否使用了錯誤的關鍵字或者關鍵字的順序是否正確等等。預處理則會根據MySQL規則進一步檢查解析樹是否合法。比如檢查要查詢的數據表和數據列是否存在等等。

7.系統內核參數優化

```bash

#基礎配置

datadir=/data/datafile

socket=/var/lib/mysql/mysql.sock

log-error=/data/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

character_set_server=utf8

#允許任意IP訪問

bind-address = 0.0.0.0

#是否支持符號鏈接,即數據庫或表可以存儲在my.cnf中指定datadir之外的分區或目錄,為0不開啟

#symbolic-links=0

#支持大小寫

lower_case_table_names=1

#二進制配置

server-id = 1

log-bin = /data/log/mysql-bin.log

log-bin-index =/data/log/binlog.index

log_bin_trust_function_creators=1

expire_logs_days=7

#sql_mode定義了mysql應該支持的sql語法,數據校驗等

#mysql5.0以上版本支持三種sql_mode模式:ANSI、TRADITIONAL和STRICT_TRANS_TABLES。

#ANSI模式:寬松模式,對插入數據進行校驗,如果不符合定義類型或長度,對數據類型調整或截斷保存,報warning警告。

#TRADITIONAL模式:嚴格模式,當向mysql數據庫插入數據時,進行數據的嚴格校驗,保證錯誤數據不能插入,報error錯誤。用于事物時,會進行事物的回滾。

#STRICT_TRANS_TABLES模式:嚴格模式,進行數據的嚴格校驗,錯誤數據不能插入,報error錯誤。

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

#InnoDB存儲數據字典、內部數據結構的緩沖池,16MB已經足夠大了。

innodb_additional_mem_pool_size = 16M

#InnoDB用于緩存數據、索引、鎖、插入緩沖、數據字典等

#如果是專用的DB服務器,且以InnoDB引擎為主的場景,通常可設置物理內存的60%

#如果是非專用DB服務器,可以先嘗試設置成內存的1/4

innodb_buffer_pool_size = 4G

#InnoDB的log buffer,通常設置為 64MB 就足夠了

innodb_log_buffer_size = 64M

#InnoDB redo log大小,通常設置256MB 就足夠了

innodb_log_file_size = 256M

#InnoDB redo log文件組,通常設置為 2 就足夠了

innodb_log_files_in_group = 2

#共享表空間:某一個數據庫的所有的表數據,索引文件全部放在一個文件中,默認這個共享表空間的文件路徑在data目錄下。默認的文件名為:ibdata1 初始化為10M。

#獨占表空間:每一個表都將會生成以獨立的文件方式來進行存儲,每一個表都有一個.frm表描述文件,還有一個.ibd文件。其中這個文件包括了單獨一個表的數據內容以及索引內容,默認情況下它的存儲位置也是在表的位置之中。

#設置參數為1啟用InnoDB的獨立表空間模式,便于管理

innodb_file_per_table = 1

#InnoDB共享表空間初始化大小,默認是 10MB,改成 1GB,并且自動擴展

innodb_data_file_path = ibdata1autoextend

#設置臨時表空間最大4G

innodb_temp_data_file_path=ibtmp1autoextend4096M

#啟用InnoDB的status file,便于管理員查看以及監控

innodb_status_file = 1

#當設置為0,該模式速度最快,但不太安全,mysqld進程的崩潰會導致上一秒鐘所有事務數據的丟失。

#當設置為1,該模式是最安全的,但也是最慢的一種方式。在mysqld 服務崩潰或者服務器主機crash的情況下,binary log 只有可能丟失最多一個語句或者一個事務。

#當設置為2,該模式速度較快,也比0安全,只有在操作系統崩潰或者系統斷電的情況下,上一秒鐘所有事務數據才可能丟失。

innodb_flush_log_at_trx_commit = 1

#設置事務隔離級別為 READ-COMMITED,提高事務效率,通常都滿足事務一致性要求

#transaction_isolation = READ-COMMITTED

#max_connections:針對所有的賬號所有的客戶端并行連接到MYSQL服務的最大并行連接數。簡單說是指MYSQL服務能夠同時接受的最大并行連接數。

#max_user_connections : 針對某一個賬號的所有客戶端并行連接到MYSQL服務的最大并行連接數。簡單說是指同一個賬號能夠同時連接到mysql服務的最大連接數。設置為0表示不限制。

#max_connect_errors:針對某一個IP主機連接中斷與mysql服務連接的次數,如果超過這個值,這個IP主機將會阻止從這個IP主機發送出去的連接請求。遇到這種情況,需執行flush hosts。

#執行flush host或者 mysqladmin flush-hosts,其目的是為了清空host cache里的信息。可適當加大,防止頻繁連接錯誤后,前端host被mysql拒絕掉

#在 show global 里有個系統狀態Max_used_connections,它是指從這次mysql服務啟動到現在,同一時刻并行連接數的最大值。它不是指當前的連接情況,而是一個比較值。如果在過去某一個時刻,MYSQL服務同時有10

00個請求連接過來,而之后再也沒有出現這么大的并發請求時,則Max_used_connections=1000.請注意與show variables 里的max_user_connections的區別。#Max_used_connections / max_connections * 100% ≈ 85%

max_connections=600

max_connect_errors=1000

max_user_connections=400

#設置臨時表最大值,這是每次連接都會分配,不宜設置過大 max_heap_table_size 和 tmp_table_size 要設置一樣大

max_heap_table_size = 100M

tmp_table_size = 100M

#每個連接都會分配的一些排序、連接等緩沖,一般設置為 2MB 就足夠了

sort_buffer_size = 2M

join_buffer_size = 2M

read_buffer_size = 2M

read_rnd_buffer_size = 2M

#建議關閉query cache,有些時候對性能反而是一種損害

query_cache_size = 0

#如果是以InnoDB引擎為主的DB,專用于MyISAM引擎的 key_buffer_size 可以設置較小,8MB 已足夠

#如果是以MyISAM引擎為主,可設置較大,但不能超過4G

key_buffer_size = 8M

#設置連接超時閥值,如果前端程序采用短連接,建議縮短這2個值,如果前端程序采用長連接,可直接注釋掉這兩個選項,是用默認配置(8小時)

#interactive_timeout = 120

#wait_timeout = 120

#InnoDB使用后臺線程處理數據頁上讀寫I/0請求的數量,允許值的范圍是1-64

#假設CPU是2顆4核的,且數據庫讀操作比寫操作多,可設置

#innodb_read_io_threads=5

#innodb_write_io_threads=3

#通過show engine innodb status的FILE I/O選項可查看到線程分配

#設置慢查詢閥值,單位為秒

long_query_time = 120

slow_query_log=1 #開啟mysql慢sql的日志

log_output=table,File #日志輸出會寫表,也會寫日志文件,為了便于程序去統計,所以最好寫表

slow_query_log_file=/data/log/slow.log

##針對log_queries_not_using_indexes開啟后,記錄慢sql的頻次、每分鐘記錄的條數

#log_throttle_queries_not_using_indexes = 5

##作為從庫時生效,從庫復制中如何有慢sql也將被記錄

#log_slow_slave_statements = 1

##檢查未使用到索引的sql

#log_queries_not_using_indexes = 1

#快速預熱緩沖池

innodb_buffer_pool_dump_at_shutdown=1

innodb_buffer_pool_load_at_startup=1

#打印deadlock日志

innodb_print_all_deadlocks=1

這些參數可按照自己的實際服務器以及數據庫的大小進行適當調整,主要起參考作用

8.表字段優化

很多系統一開始并沒有考慮表字段拆分的問題,因為拆分會帶來邏輯、部署、運維的各種復雜度,一般以整型值為主的表在千萬級以下,字符串為主的表在五百萬以下,而事實上很多時候MySQL單表的性能依然有不少優化空間,甚至能正常支撐千萬級以上的數據量:

下面直接看下如何去優化字段

盡量使用TINYINT、SMALLINT、MEDIUM_INT作為整數類型而非INT,如果非負則加上UNSIGNED

單表不要有太多字段,建議在15以內

盡量使用TIMESTAMP而非DATETIME

使用枚舉或整數代替字符串類型

VARCHAR的長度只分配真正需要的空間

避免使用NULL字段,很難查詢優化且占用額外索引空間

用整型來存IP

9.分布式場景下常用優化手段

升級硬件

Scale up,這個不多說了,根據MySQL是CPU密集型還是I/O密集型,通過提升CPU和內存、使用SSD,都能顯著提升MySQL性能

讀寫分離

也是目前常用的優化,從庫讀主庫寫,一般不要采用雙主或多主引入很多復雜性,盡量采用文中的其他方案來提高性能。同時目前很多拆分的解決方案同時也兼顧考慮了讀寫分離

使用緩存

緩存可以發生在這些層次:

MySQL內部:在系統內核參數優化介紹了相關設置

數據訪問層:比如MyBatis針對SQL語句做緩存,而Hibernate可以精確到單個記錄,這里緩存的對象主要是持久化對象Persistence Object

應用服務層:這里可以通過編程手段對緩存做到更精準的控制和更多的實現策略,這里緩存的對象是數據傳輸對象Data Transfer Object

Web層:針對web頁面做緩存

瀏覽器客戶端:用戶端的緩存

可以根據實際情況在一個層次或多個層次結合加入緩存。這里重點介紹下服務層的緩存實現,目前主要有兩種方式:

直寫式(Write Through):在數據寫入數據庫后,同時更新緩存,維持數據庫與緩存的一致性。這也是當前大多數應用緩存框架如Spring Cache的工作方式。這種實現非常簡單,同步好,但效率一般。

回寫式(Write Back):當有數據要寫入數據庫時,只會更新緩存,然后異步批量的將緩存數據同步到數據庫上。這種實現比較復雜,需要較多的應用邏輯,同時可能會產生數據庫與緩存的不同步,但效率非常高。

水平拆分。

總結

其實MySQL的優化還有很多,有興趣的可以讀讀MySQL高性能優化的書,但以上這些是在我們實際生產環境中比較常用的優化手段,掌握這些,不是我吹,能吊打一般的面試官了。

原文標題:MySQL 海量數據優化(理論+實戰) 吊打面試官

文章出處:【微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • MySQL
    +關注

    關注

    1

    文章

    906

    瀏覽量

    29554

原文標題:MySQL 海量數據優化(理論+實戰) 吊打面試官

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    CW32單片機支持哪幾種開發環境,比較常用的MDK支持嗎?

    CW32單片機支持哪幾種開發環境,比較常用的MDK支持嗎。 若使用MDK開發,是否也需要下載芯片包,導入到MDK中?xxx32的庫可以用嗎。
    發表于 01-26 06:14

    恒訊科技解析:如何安裝MySQL并創建數據庫

    安裝和管理MySQL不必復雜。只需幾分鐘,你就能在Linux服務器上搭建MySQL,創建第一個數據庫,甚至自動化備份——同時確保數據安全有序。 什么是 MySQL? MySQL 是一個
    的頭像 發表于 01-14 14:25 ?180次閱讀

    工業數據中臺支持接入MySQL數據庫嗎

    工業數據中臺完全支持接入MySQL數據庫 ,且通過數據同步、集成與治理等技術手段,能夠充分發揮MySQL在數據存儲與事務處理方面的優勢,同時彌補其在數據分析與共享能力上的不足,具體分析如下: 技術
    的頭像 發表于 12-04 11:23 ?381次閱讀
    工業數據中臺支持接入<b class='flag-5'>MySQL</b>數據庫嗎

    無壓燒結銀膏應該怎樣脫泡,手段有哪些?

    的關鍵工序。 以下是目前業界和研究中常用的無壓燒結銀膏脫泡手段,可以分為三大類: 一、 膏體混合與制備階段的脫泡 這是在銀膏使用前,對膏體本身進行的預處理。 離心脫泡 原理:利用高速旋轉產生的離心力
    發表于 10-04 21:11

    MySQL慢查詢終極優化指南

    作為一名在生產環境摸爬滾打多年的運維工程師,我見過太多因為慢查詢導致的線上故障。今天分享一套經過實戰檢驗的MySQL慢查詢分析與索引優化方法論,幫你徹底解決數據庫性能瓶頸。
    的頭像 發表于 08-13 15:55 ?856次閱讀

    CentOS 7下MySQL 8雙主熱備高可用架構全解

    Centos7部署MySQL8+keepalived雙主熱備(含Keepalived配置與GTID同步優化方案) 架構拓撲原理 GTID同步 VIP 192.168.1.100 MySQL主節點1
    的頭像 發表于 08-12 17:08 ?834次閱讀

    MySQL配置調優技巧

    上個月,我們公司的核心業務系統突然出現大面積超時,用戶投訴電話不斷。經過緊急排查,發現是MySQL服務器CPU飆升到99%,大量慢查詢堆積。通過一系列配置調優和SQL優化,最終在30分鐘內恢復了服務。
    的頭像 發表于 07-31 10:27 ?625次閱讀

    MySQL 8.0性能優化實戰指南

    作為一名運維工程師,MySQL數據庫優化是我們日常工作中最具挑戰性的任務之一。MySQL 8.0作為當前主流版本,在性能、安全性和功能上都有了顯著提升,但如何充分發揮其潛力,仍需要我們掌握正確的
    的頭像 發表于 07-24 11:48 ?863次閱讀

    MySQL的組成結構與結構化查詢語言詳解

    MySQL作為世界上最流行的開源關系型數據庫管理系統,采用了分層架構設計
    的頭像 發表于 07-14 11:21 ?652次閱讀

    MySQL數據備份與恢復策略

    數據是企業的核心資產,MySQL作為主流的關系型數據庫管理系統,其數據的安全性和可靠性至關重要。本文將深入探討MySQL的數據備份策略、常用備份工具以及數據恢復的最佳實踐,幫助運維工程師構建完善的數據保護體系。
    的頭像 發表于 07-14 11:11 ?743次閱讀

    企業級MySQL數據庫管理指南

    在當今數字化時代,MySQL作為全球最受歡迎的開源關系型數據庫,承載著企業核心業務數據的存儲與處理。作為數據庫管理員(DBA),掌握MySQL的企業級部署、優化、維護技能至關重要。本文將從實戰角度出發,系統闡述
    的頭像 發表于 07-09 09:50 ?735次閱讀

    MySQL數據庫是什么

    MySQL數據庫是一種 開源的關系型數據庫管理系統(RDBMS) ,由瑞典MySQL AB公司開發,后被Oracle公司收購。它通過結構化查詢語言(SQL)進行數據存儲、管理和操作,廣泛應用于Web
    的頭像 發表于 05-23 09:18 ?1224次閱讀

    VirtualLab:光柵的優化與分析

    的算法: TEA和FMM(也稱為RCWA)。比較了不同周期的兩種類型的光柵(正弦和閃耀)結果。 傾斜光柵的參數優化及公差分析 以傅里葉模態法(FMM)作為參數優化的核心,設計了一個傾斜光柵來實現高衍射效率將光耦合到光波導中的目
    發表于 05-23 08:49

    MySQL簡介與理論基礎

    MySQL是世界上最流行的開源關系型數據庫管理系統之一,廣泛應用于網站、應用程序和企業級系統。它采用客戶端/服務器架構,支持多用戶環境,并基于SQL(結構化查詢語言)標準。
    的頭像 發表于 05-21 10:43 ?748次閱讀

    除了增刪改查你對MySQL還了解多少

    我們都知道MySQL服務器的默認端口為3306,之后就在這個端口號上等待客戶端進程進行連接(MySQL服務器會默認監聽3306端口)。
    的頭像 發表于 04-14 17:20 ?738次閱讀