欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

MySQL 5.7的數(shù)據(jù)庫(kù)優(yōu)化器還是這么簡(jiǎn)單?

OSC開源社區(qū) ? 來(lái)源:愛可生開源社區(qū) ? 2023-09-22 09:35 ? 次閱讀

1 問(wèn)題現(xiàn)象

自發(fā)布了 INSERT 并發(fā)死鎖問(wèn)題的文章,收到了多次死鎖問(wèn)題的交流。一個(gè)具體案例如下:

研發(fā)反饋應(yīng)用發(fā)生死鎖,收集如下診斷內(nèi)容:

------------------------
LATESTDETECTEDDEADLOCK
------------------------
2023-07-0406400x7fc07dd0e700
***(1)TRANSACTION:
TRANSACTION182396268,ACTIVE0secfetchingrows
mysqltablesinuse1,locked1
LOCKWAIT21lockstruct(s),heapsize3520,2rowlock(s),undologentries1
MySQLthreadid59269692,OSthreadhandle140471135803136,queryid3738514953192.168.0.215user1updating
deletefromltb2wherec='CCRSFD07E'andj='Y15'andb>='20230717'andd!='1'ande!='1'
***(1)WAITINGFORTHISLOCKTOBEGRANTED:
RECORDLOCKSspaceid603pageno86nbits248indexPRIMARYoftable`testdb`.`ltb2`trxid182396268lock_modeXlocksrecbutnotgapwaiting
***(2)TRANSACTION:
TRANSACTION182396266,ACTIVE0secfetchingrows,threaddeclaredinsideInnoDB1729
mysqltablesinuse1,locked1
28lockstruct(s),heapsize3520,2rowlock(s),undologentries1
MySQLthreadid59261188,OSthreadhandle140464721291008,queryid3738514964192.168.0.214user1updating
updateltb2setf='0',g='0',is_value_date='0',h='0',i='0'wherec='22115001B'andj='Y4'andb>='20230717'
***(2)HOLDSTHELOCK(S):
RECORDLOCKSspaceid603pageno86nbits248indexPRIMARYoftable`testdb`.`ltb2`trxid182396266lock_modeXlocksrecbutnotgap
***(2)WAITINGFORTHISLOCKTOBEGRANTED:
RECORDLOCKSspaceid603pageno86nbits248indexPRIMARYoftable`testdb`.`ltb2`trxid182396266lock_modeXlocksrecbutnotgapwaiting
***WEROLLBACKTRANSACTION(1)
------------

以上 space id 603 page no 86 n bits 248,其中 space id 表示表空間 ID,page no 表示記錄鎖在表空間內(nèi)的哪一頁(yè),n bits 是鎖位圖中的位數(shù),而不是頁(yè)面偏移量。記錄的頁(yè)偏移量一般以 heap no 的形式輸出,但此例并未輸出該信息。

基本環(huán)境信息

確認(rèn)如下問(wèn)題相關(guān)信息:

數(shù)據(jù)庫(kù)版本:Percona MySQL 5.7

事務(wù)隔離級(jí)別:Read-Commited

表結(jié)構(gòu)和索引

CREATETABLE`ltb2`(
`ID`bigint(20)unsignedNOTNULLAUTO_INCREMENTCOMMENT'ID',
`j`varchar(16)DEFAULTNULLCOMMENT'',
`c`varchar(32)NOTNULLDEFAULT''COMMENT'',
`b`dateNOTNULLDEFAULT'2019-01-01'COMMENT'',
`f`varchar(1)NOTNULLDEFAULT''COMMENT'',
`g`varchar(1)NOTNULLDEFAULT''COMMENT'',
`d`varchar(1)NOTNULLDEFAULT''COMMENT'',
`e`varchar(1)NOTNULLDEFAULT''COMMENT'',
`h`varchar(1)NOTNULLDEFAULT''COMMENT'',
`i`varchar(1)DEFAULTNULLCOMMENT'',
`LAST_UPDATE_TIME`timestampNOTNULLDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_TIMESTAMPCOMMENT'修改時(shí)間',
PRIMARYKEY(`ID`),
UNIQUEKEY`uidx_1`(`b`,`c`)
)ENGINE=InnoDBAUTO_INCREMENT=270983DEFAULTCHARSET=utf8mb4COMMENT='';

關(guān)鍵信息梳理

事務(wù) T1
語(yǔ)句 delete from ltb2 where c = 'code001' and j = 'Y15' and b >= '20230717' and d != '1' and e != '1'
關(guān)聯(lián)對(duì)象及記錄 space id 603 page no 86 n bits 248 index PRIMARY of table testdb.ltb2
持有的鎖 未知
等待的鎖 lock_mode X locks rec but not gap waiting
事務(wù) T2
語(yǔ)句 update ltb2 set f = '0', g = '0', is_value_date = '0', h = '0', i = '0' where c = '22115001B' and j = 'Y4' and b >= '20230717'
關(guān)聯(lián)對(duì)象及記錄 space id 603 page no 86 n bits 248 index PRIMARY of table testdb.ltb2
持有的鎖 lock_mode X locks rec but not gap
等待的鎖 lock_mode X locks rec but not gap waiting

可以看到在主鍵索引上發(fā)生了死鎖,但是在查詢的條件中,并未使用主鍵列。

那為什么會(huì)在主鍵列出現(xiàn)死鎖?

在分析死鎖根因問(wèn)題前,需要先清楚 SQL 的執(zhí)行情況。

2 SQL 執(zhí)行情況

執(zhí)行計(jì)劃

以上兩個(gè) SQL 發(fā)現(xiàn)都有列 b、c 作為條件,且該列構(gòu)成了索引唯一索引 uidx_1。簡(jiǎn)化 SQL 改為查詢語(yǔ)句,并確認(rèn)執(zhí)行計(jì)劃:

mysql>descselect*fromltb2whereb>='20230717'andc='code001';

#部分結(jié)果
+------+-------------------+------+---------+
|type|possible_keys|key|Extra|
+------+-------------------+------+---------+
|ALL|uidx_1|NULL|Usingwhere|
+------+-------------------+------+---------+

注意:自 MySQL 5.6 開始可以直接查看 UPDATE/DELETE/INSERT 等語(yǔ)句的執(zhí)行計(jì)劃。因個(gè)人習(xí)慣、避免誤操作等原因,還是習(xí)慣改為 SELECT 查看執(zhí)行計(jì)劃。

執(zhí)行計(jì)劃中可能的索引有uidx_1(b,c),但實(shí)際并未使用該索引,而是采用全表掃描方式執(zhí)行。

根據(jù)經(jīng)驗(yàn),由于列 b 為索引的最左列。但查詢的條件為b>= '20230717',即該條件不是等值查詢。因此數(shù)據(jù)庫(kù)可能只能“使用”到 b 列。為進(jìn)一步確認(rèn)不使用 b 列索引的原因,查詢數(shù)據(jù)分布:

mysql>selectcount(1)fromltb2;

+------------+
|count(1)|
+------------+
|4509|
+------------+

mysql>selectcount(1)fromltb2whereb>='20230717';

+------------+
|count(1)|
+------------+
|1275|
+------------+

計(jì)算滿足 b 列條件的數(shù)據(jù)占比為 1275/4509 = 28%,占比差不多達(dá)到了 1/3。此時(shí)也的確不應(yīng)使用該使用索引。

難道已經(jīng)是作為 MySQL 5.7 的數(shù)據(jù)庫(kù),優(yōu)化器還是這么簡(jiǎn)單?

ICP 特性

帶著問(wèn)題,將條件設(shè)置一個(gè)更大的值(但小于該列的最大值),再次執(zhí)行驗(yàn)證查詢語(yǔ)句:

mysql>descselect*fromltb2whereb>='20990717';

#部分結(jié)果
+----------+---------+---------+
|key_len|rows|Extra|
+----------+---------+---------+
|3|64|UsingIndexcondition|
+----------+---------+---------+

優(yōu)化器預(yù)估返回 64 行,數(shù)據(jù)占比 64/4509 = 1.4%,因此可以使用索引。但通過(guò)執(zhí)行計(jì)劃,從Extra列看到Using index condition提示。該提示則說(shuō)明使用了索引條件下推(Index Condition Pushdown, ICP)。針對(duì)該特性,參考官方簡(jiǎn)要說(shuō)明如下:

使用 Index Condition Pushdown,掃描將像這樣進(jìn)行:

獲取下一行的索引元組(但不是完整的表行)。

測(cè)試 WHERE 條件中應(yīng)用于此表的部分,并且只能使用索引列的進(jìn)行檢查。如果不滿足條件,則繼續(xù)到下一行的索引元組。

如果滿足條件,則使用索引元組定位并讀取整個(gè)表行。

測(cè)試適用于此表的 WHERE 條件的其余部分。根據(jù)測(cè)試結(jié)果接受或拒絕該行。

既然可以使用到 ICP 特性,進(jìn)一步執(zhí)行如下驗(yàn)證語(yǔ)句:

mysql>descselect*fromltb2whereb>='20990717'andc='code001';

#部分結(jié)果
+----------+---------+---------+
|key_len|rows|Extra|
+----------+---------+---------+
|133|64|UsingIndexcondition|
+----------+---------+---------+

發(fā)現(xiàn)當(dāng)新增 c 列作為條件后,并且根據(jù) key_len(索引里使用的字節(jié)數(shù))可以判斷,的確使用到了 uidx_1 索引中的 c 列。但 rows 的結(jié)果與實(shí)際返回結(jié)果差異較大(實(shí)際執(zhí)行僅返回 0 行)。

更重要的是,既然具有 ICP 特性,針對(duì)原始的 SQL 為什么不能助于 ICP 特性使用到索引呢?

mysql>select*fromltb2whereb>='20230717'andc='code001'

執(zhí)行計(jì)劃跟蹤

繼續(xù)帶著問(wèn)題,通過(guò) MySQL 提供的 OPTIMIZER TRACE,跟蹤執(zhí)行計(jì)劃生成過(guò)程。命令如下:

SETOPTIMIZER_TRACE="enabled=on",END_MARKERS_IN_JSON=on;
SETOPTIMIZER_TRACE_MAX_MEM_SIZE=1000000;
--sql-1:
select*fromltb2whereb>='20990717'andc='code001';
--sql-2:
select*fromltb2whereb>='20990717';
--sql-3
select*fromltb2whereb>='20230717'andc='code001';

SELECT*FROMINFORMATION_SCHEMA.OPTIMIZER_TRACEG
SEToptimizer_trace="enabled=off";

由于分析結(jié)果較長(zhǎng),截取 SQL-1 和 SQL-2 的部分結(jié)果 (rows_estimation 和 considered_execution_plans)。具體內(nèi)容如下:

SQL-1

select*fromltb2whereb>='20990717'andc='code001'

#分析結(jié)果
"analyzing_range_alternatives":{
"range_scan_alternatives":[
{
"index":"uidx_1",
"ranges":[
"0xe76610<=?b"
????????]?/*?ranges?*/,
????????"index_dives_for_eq_ranges":?true,
????????"rowid_ordered":?false,
????????"using_mrr":?false,
????????"index_only":?false,
????????"rows":64,
????????"cost":?77.81,
????????"chosen":?true
?????}
??]?/*?range_scan?alternatives?*/
}

"best_access_path":{
????"considered?access_paths":[
??????"rows_to_scan":?64,
??????"access_type":"range",
??????"range_details":{
????????"used?index";"uidx?1"
????????}?/*?range_details?*/,
??????"resulting_rows":?64,
??????"cost":?90.61,
??????"chosen":?true
????}
??]?/*?considered?access_paths?*/
}?/*?best?access_path?*/,

SQL-2

select*fromltb2whereb>='20990717'

#分析結(jié)果
"analyzing_range_alternatives":{
"range_scan_alternatives":[
{
"index":"uidx_1",
"ranges":[
"0xe76610<=?b"
????????]?/*?ranges?*/,
????????"index_dives_for_eq_ranges":?true,
????????"rowid_ordered":?false,
????????"using_mrr":?false,
????????"index_only":?false,
????????"rows":64,
????????"cost":?77.81,
????????"chosen":?true
?????}
??]?/*?range_scan?alternatives?*/
}

"considered?access_paths":[
??{
????"rows_to_scan":?64,
????"access_type":"range",
????"range_details":{
??????"used?index":"uidx_1"
??????}?/*?range_details?*/,
??????"resulting_rows":?64,
??????"cost":?90.61,
??????"chosen":?true
???}
]?/*?considered?access_paths?*/,

根據(jù)以上信息:兩個(gè) SQL 的 cost 部分是完全相同的,且在優(yōu)化器分析階段只能識(shí)別到 b 的條件。分析階段,只能根據(jù)優(yōu)化器認(rèn)為可用的列來(lái)計(jì)算 cost。ICP 特性,應(yīng)該是在執(zhí)行階段采用用到的特性。

同時(shí),根據(jù) SQL-3 的執(zhí)行跟蹤結(jié)果,對(duì)比全表掃描和索引掃描的 cost,截取部分結(jié)果如下:

SQL-3

select*fromltb2whereb>='20230717'andc='code001';

#全表掃描結(jié)果
"range_analysis":{
"table_scan":{
"rows":4669,
"cost":1018.9
}/*table_scan*/,

#索引掃描評(píng)估結(jié)果
"analyzing_range_alternatives":{
"range_scan_alternatives":[
{
"index":"uidx_1",
"ranges":[
"@xe7ce0f]<=?b"
????????]?/*?ranges?*/,
????????"index?dives_for_eq_ranges":?true,
????????"rowid_ordered":?false,
????????"using_mrr":?false,
????????"index_only":?false,
????????"?rows":?1273,
????????"cost":?1528.6,
????????"chosen":?false,
????????"cause":"cost"
??????}
??]?/*?range?scan_alternatives?*/,
??
#?最優(yōu)執(zhí)行計(jì)劃
"best_access_path":?{
??"considered?access_paths":[
????{
??????"rows_to_scan":?4669,
??????"access_type":"scan",
??????"resulting_rows":?4669,
??????"cost":?1016.8,
??????"chosen":?true
????}
??]?/*?considered?access_paths?*//*?best?access_path?*/
}

由于優(yōu)化器階段使用使用列 b,使用索引的成本高于全表掃描。那最終數(shù)據(jù)庫(kù)就會(huì)選擇使用全表掃描。除非應(yīng)用使用 hint 強(qiáng)制索引:

mysql>descselect*fromltb2FORCEINDEX(uidx_1)whereb>='20230717'andc='code001';

#部分結(jié)果
+----------+---------+---------+
|key_len|rows|Extra|
+----------+---------+---------+
|133|1273|UsingIndexcondition|
+----------+---------+---------+

同時(shí),根據(jù)執(zhí)行計(jì)劃的輸出結(jié)果,rows 列應(yīng)該是優(yōu)化器階段的輸出,key_len/Extra 則包括了執(zhí)行階段的輸出。

小結(jié)

綜上所述,對(duì)于問(wèn)題 SQL 和索引結(jié)構(gòu),由于列 b 為索引的最左列,且查詢時(shí)的條件為 b>= '20230717'(非等值條件),數(shù)據(jù)庫(kù)優(yōu)化器只能“使用”到 b 列。并給予“使用”的列,評(píng)估掃碼的行數(shù)和 cost。

如果優(yōu)化器評(píng)估后,使用索引的成本更低,則可以使用該索引,并利用 ICP 特性進(jìn)一步提高查詢性能;

如果優(yōu)化器評(píng)估后,使用全表掃描或的成本更低,那數(shù)據(jù)庫(kù)就會(huì)選擇使用全表掃描。

3 SQL 優(yōu)化方案

根據(jù)第 2 部分明確了問(wèn)題的原因后,通過(guò)調(diào)整索引,解決最左列尾范圍查詢的問(wèn)題即可解決該問(wèn)題。具體如下:

altertableltb2dropindexuidx_1;
altertableltb2addindexuidx_1(c,b);
altertableltb2addindexidx_(b);

死鎖為何發(fā)生

自此,完成了 SQL 執(zhí)行計(jì)劃問(wèn)題的分析和解決。但直接的問(wèn)題是死鎖,因查詢語(yǔ)句無(wú)法使用索引,正常就應(yīng)該使用全表掃描。但是全表掃描為什么會(huì)出現(xiàn)死鎖呢?

在此,對(duì)死鎖過(guò)程進(jìn)行大膽猜想:

T1 時(shí)刻

trx-2 執(zhí)行了 UPDATE,在處理行時(shí),在 row_search_mvcc 函數(shù)中,查詢到數(shù)據(jù)。獲取了對(duì)應(yīng)行的 LOCK_X,LOCK_REC_NOT_GAP 鎖;

T2 時(shí)刻

trx-1 執(zhí)行了 DELETE,在處理行時(shí),在 row_search_mvcc 函數(shù)中,查詢到數(shù)據(jù),嘗試獲取行的 LOCK_X,LOCK_REC_NOT_GAP。但由于 trx-1 已經(jīng)持有了該鎖,因此被堵塞。并會(huì)創(chuàng)建一個(gè)鎖(以指示鎖等待);

T3 時(shí)刻

trx-2 繼續(xù)執(zhí)行 UPDATE 操作。由于是該操作除了在 T1 時(shí)刻的操作外,在其它位置,還需要獲取鎖(lock_mode X locks rec but not gap)。但由于 T2 時(shí)刻,trx-1 嘗試獲取該鎖而被堵塞,并且也增加了一個(gè)鎖。

假如此時(shí),此處的實(shí)現(xiàn)機(jī)制和 INSERT 死鎖案例一樣,也沒有先進(jìn)行沖突檢查。而只是看記錄上是否存在鎖的話,那么此時(shí)也會(huì)看到該記錄上有 trx-1 事務(wù)的鎖。從而導(dǎo)致 trx-2 第二次獲取鎖時(shí),被堵塞。

死鎖發(fā)生!







審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • SQL
    SQL
    +關(guān)注

    關(guān)注

    1

    文章

    775

    瀏覽量

    44274
  • MYSQL數(shù)據(jù)庫(kù)

    關(guān)注

    0

    文章

    96

    瀏覽量

    9464
  • ICP
    ICP
    +關(guān)注

    關(guān)注

    0

    文章

    71

    瀏覽量

    12850

原文標(biāo)題:從一個(gè)死鎖問(wèn)題分析優(yōu)化器特性

文章出處:【微信號(hào):OSC開源社區(qū),微信公眾號(hào):OSC開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    怎么簡(jiǎn)單實(shí)現(xiàn)由Labview讀取的串口數(shù)據(jù)自增寫入mysql5.7數(shù)據(jù)庫(kù)中?

    怎么簡(jiǎn)單實(shí)現(xiàn)由Labview讀取的串口數(shù)據(jù)自增寫入mysql5.7數(shù)據(jù)庫(kù)中? 已實(shí)現(xiàn):串口數(shù)據(jù)的接收處理
    發(fā)表于 01-11 22:05

    mysql數(shù)據(jù)庫(kù)設(shè)計(jì)步驟

    mysql數(shù)據(jù)庫(kù)設(shè)計(jì)和優(yōu)化
    發(fā)表于 05-13 11:00

    MySQL數(shù)據(jù)庫(kù)使用

    關(guān)于MySQL數(shù)據(jù)庫(kù)簡(jiǎn)單操作
    發(fā)表于 10-24 14:32

    mysql數(shù)據(jù)庫(kù)同步原理

    數(shù)據(jù)庫(kù)的訪問(wèn)壓力,提升整個(gè)系統(tǒng)的性能和可用性,降低了大訪問(wèn)量引發(fā)數(shù)據(jù)庫(kù)宕機(jī)的故障率。 binlog簡(jiǎn)介 MySQL主從同步是基于binlog文件主從復(fù)制實(shí)現(xiàn),為了更好的理解主從同步過(guò)程,這里
    發(fā)表于 09-28 11:49 ?0次下載
    <b class='flag-5'>mysql</b><b class='flag-5'>數(shù)據(jù)庫(kù)</b>同步原理

    MySQL數(shù)據(jù)庫(kù)如何安裝和使用說(shuō)明

    :文件夾 5.數(shù)據(jù)庫(kù)管理軟件:MySQL oracle,db2,sqlserver 6.數(shù)據(jù)庫(kù)服務(wù):運(yùn)行數(shù)據(jù)庫(kù)管理軟件的計(jì)算機(jī)
    的頭像 發(fā)表于 02-13 16:13 ?2851次閱讀

    MySQL數(shù)據(jù)庫(kù):理解MySQL的性能優(yōu)化優(yōu)化查詢

    最近一直在為大家更新MySQL相關(guān)學(xué)習(xí)內(nèi)容,可能有朋友不懂MySQL的重要性。在程序,語(yǔ)言,架構(gòu)更新?lián)Q代頻繁的今天,MySQL 恐怕是大家使用最多的存儲(chǔ)數(shù)據(jù)庫(kù)了。由于
    的頭像 發(fā)表于 07-02 17:18 ?3159次閱讀
    <b class='flag-5'>MySQL</b><b class='flag-5'>數(shù)據(jù)庫(kù)</b>:理解<b class='flag-5'>MySQL</b>的性能<b class='flag-5'>優(yōu)化</b>、<b class='flag-5'>優(yōu)化</b>查詢

    華為云數(shù)據(jù)庫(kù)-RDS for MySQL數(shù)據(jù)庫(kù)

    華為云數(shù)據(jù)庫(kù)-RDS for MySQL數(shù)據(jù)庫(kù) 華為云數(shù)據(jù)庫(kù)作為華為云的一款數(shù)據(jù)庫(kù)產(chǎn)品,它主要是以MyS
    的頭像 發(fā)表于 10-27 11:06 ?1581次閱讀

    MySQL數(shù)據(jù)庫(kù)服務(wù)、數(shù)據(jù)庫(kù)和表之間是什么關(guān)系

    數(shù)據(jù)庫(kù)服務(wù)MySQL安裝后,會(huì)成為一個(gè)windows服務(wù),這個(gè)windows服務(wù)可以看做是數(shù)據(jù)庫(kù)服務(wù)。用CMD登錄
    的頭像 發(fā)表于 01-31 14:59 ?1286次閱讀
    <b class='flag-5'>MySQL</b><b class='flag-5'>數(shù)據(jù)庫(kù)</b>服務(wù)<b class='flag-5'>器</b>、<b class='flag-5'>數(shù)據(jù)庫(kù)</b>和表之間是什么關(guān)系

    MySQL數(shù)據(jù)庫(kù)管理與應(yīng)用

    MySQL數(shù)據(jù)庫(kù)管理與應(yīng)用 MySQL是一種廣泛使用的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),被認(rèn)為是最流行和最常見的開源數(shù)據(jù)庫(kù)之一。它可以被用于多種不同的應(yīng)
    的頭像 發(fā)表于 08-28 17:15 ?1048次閱讀

    mysql是一個(gè)什么類型的數(shù)據(jù)庫(kù)

    MySQL是一種關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS),用于存儲(chǔ)和管理大量結(jié)構(gòu)化數(shù)據(jù)。它被廣泛用于各種應(yīng)用程序和網(wǎng)站的后端,包括電子商務(wù)平臺(tái)、社交媒體網(wǎng)站、金融系統(tǒng)等等。MySQL的特點(diǎn)是
    的頭像 發(fā)表于 11-16 14:43 ?1901次閱讀

    MySQL數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)

    的基礎(chǔ)知識(shí),包括其架構(gòu)、數(shù)據(jù)類型、表操作、查詢語(yǔ)句和數(shù)據(jù)導(dǎo)入導(dǎo)出等方面。 MySQL 數(shù)據(jù)庫(kù)架構(gòu) MySQL
    的頭像 發(fā)表于 11-21 11:09 ?1023次閱讀

    mysql數(shù)據(jù)庫(kù)基礎(chǔ)命令

    MySQL是一個(gè)流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),經(jīng)常用于存儲(chǔ)、管理和操作數(shù)據(jù)。在本文中,我們將詳細(xì)介紹MySQL的基礎(chǔ)命令,并提供與每個(gè)命令相關(guān)的詳細(xì)解釋。 登錄
    的頭像 發(fā)表于 12-06 10:56 ?653次閱讀

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—未開啟binlog的Mysql數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)案例

    mysql數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)環(huán)境: 本地服務(wù),windows server操作系統(tǒng) ,部署有mysql單實(shí)例,
    的頭像 發(fā)表于 12-08 14:18 ?1225次閱讀
    <b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—未開啟binlog的<b class='flag-5'>Mysql</b><b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)案例

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—Mysql數(shù)據(jù)庫(kù)表記錄丟失的數(shù)據(jù)恢復(fù)流程

    Mysql數(shù)據(jù)庫(kù)故障: Mysql數(shù)據(jù)庫(kù)表記錄丟失。 Mysql數(shù)據(jù)庫(kù)故障表現(xiàn): 1、
    的頭像 發(fā)表于 12-16 11:05 ?229次閱讀
    <b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—<b class='flag-5'>Mysql</b><b class='flag-5'>數(shù)據(jù)庫(kù)</b>表記錄丟失的<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)流程

    MySQL數(shù)據(jù)庫(kù)的安裝

    MySQL數(shù)據(jù)庫(kù)的安裝 【一】各種數(shù)據(jù)庫(kù)的端口 MySQL :3306 Redis :6379 MongoDB :27017 Django :8000 flask :5000 【二】
    的頭像 發(fā)表于 01-14 11:25 ?144次閱讀
    <b class='flag-5'>MySQL</b><b class='flag-5'>數(shù)據(jù)庫(kù)</b>的安裝