主頁 > 資料庫 > MySQL學習筆記(3):SQL

MySQL學習筆記(3):SQL

2020-09-13 17:46:04 資料庫

本文章更新于2020-06-14,使用MySQL 5.7,作業系統為Deepin 15.9,

目錄

  • DDL陳述句
    • 創建資料庫
    • 洗掉資料庫
    • 修改資料庫
    • 創建表
    • 洗掉表
    • 修改表
    • 創建索引
    • 洗掉索引
    • 創建視圖
    • 修改視圖
    • 洗掉視圖
    • 存盤程序和函式
    • 創建事件
    • 修改事件
    • 洗掉事件
    • 創建觸發器
    • 洗掉觸發器
  • DML陳述句
    • 插入記錄
    • 更新記錄
    • 洗掉記錄
    • 查詢記錄
  • DCL陳述句
    • 授予權限
    • 回收權限
    • 創建用戶
    • 修改用戶
    • 洗掉用戶
    • 修改密碼
    • 查看權限
  • 其他陳述句
    • 分析、檢查、優化、修復表
    • SHOW
    • FLUSH
    • 其他
  • 命令
  • 變數
  • 注釋

說明:下文中,小寫為自定義變數,根據實際情況填寫(個別小寫的引數除外),使用[]引起表示內容可選,使用{}引起表示內容為一個整體,|表示使用左側或右側內容,...表示重復之前內容,

實際上,所有陳述句和命令的關鍵字(文中大寫)都不區分大小寫,

以下部分陳述句是MySQL擴展,非標準SQL,

DDL陳述句

DDL陳述句,即資料定義陳述句(Data Definition Languages),其關鍵字包括:CREATEDROPALTER

在MySQL中,資料庫和表對應于資料目錄中的目錄和檔案,所以作業系統的大小寫敏感性決定資料庫名和表名的大小寫敏感性,這意味著二者在Windows中是大小寫不敏感的,在Linux中是大小寫敏感的,

類似于表名,表別名在Windows中是大小寫不敏感的,在Linux中是大小寫敏感的,

列名、索引名、存盤程序名、觸發器名等在任何平臺都是大小寫不敏感的,

創建資料庫

CREATE DATABASE dbname
[[DEFAULT] [CHARSET [=] charset] [COLLATE [=] collation]]

洗掉資料庫

DROP DATABASE dbname

修改資料庫

ALTER DATABASE dbname
[[DEFAULT] [CHARSET [=] charset] [COLLATE [=] collation]]

創建表

CREATE TABLE tablename (
{colname type [[CHARSET [=] charset] [COLLATE [=] collation]] [[NOT] NULL] [DEFAULT value]}[, ...]
[PRIMARY KEY (colname[, ...]),]
[{KEY keyname (colname[, ...])}[, ...]]
[CONSTRAINT fkname FOREIGN KEY (colname[, ...])
	REFERENCES tablename2(colname2[, ...]) [ON DELETE reference_option] [ON UPDATE reference_option]]
)
[[STORAGE] ENGINE=engine [UNION=(tablename[, ...]) [INSERT_METHOD=insert_method]]]
[[DEFAULT] [CHARSET [=] charset] [COLLATE [=] collation]]
[partition_declaration]

如不指定NOT NULLDEFAULT value,欄位默認是可空的,

reference_option可取如下值,表示本表有關聯記錄時,關聯表更新或洗掉采取何種操作:

  • RESTRICTNO ACTION:禁止關聯表更新或洗掉,
  • CASCADE:更新或洗掉本表對應記錄,
  • SET NULL:本表的對應欄位設定為NULL
  • SET DEFAULT:本表的對應欄位設定為默認值,

如使用MERGE存盤引擎,則可使用UNION=(tablename[, ...]) INSERT_METHOD=insert_methodINSERT_METHOD可取以下值:

  • FIRST:插入操作被作用在第一個表上,
  • LAST:插入操作被作用在最后一個表上,
  • NO:默認值,不能執行插入操作,

partition_declaration表示磁區陳述句,會在“磁區”文章中細述,

根據已存在的表創建新的表:

CREATE TABLE tablename1
LIKE tablename2

洗掉表

DROP TABLE tablename

修改表

添加欄位:

ALTER TABLE tablename
ADD [COLUMN] colname1 type [CHARSET [=] charset] [COLLATE [=] collation] [[NOT] NULL] [DEFAULT value]
[FIRST|{AFTER colname2}]

修改欄位定義:

ALTER TABLE tablename
MODIFY [COLUMN] colname1 type [CHARSET [=] charset] [COLLATE [=] collation] [[NOT] NULL] [DEFAULT value]
[FIRST|{AFTER colname2}]

修改欄位定義,也可修改欄位名:

ALTER TABLE tablename
CHANGE [COLUMN] oldcolname newcolname type [CHARSET [=] charset] [COLLATE [=] collation] [[NOT] NULL] [DEFAULT value]
[FIRST|{AFTER colname}]

洗掉欄位:

ALTER TABLE tablename
DROP [COLUMN] colname

修改表名:

ALTER TABLE tablename
RENAME [TO] newtablename

修改表的自動增長列初始值:

ALTER TABLE tablename
AUTO_INCREMENT = n

修改表的存盤引擎:

ALTER TABLE tablename
ENGINE=engine

修改表的字符集:

ALTER TABLE tablename
[[DEFAULT] [CHARSET [=] charset] [COLLATE [=] collation]]

創建索引

CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX indexname
[USING HASH|BTREE]
ON tablename({colname[(len)] [ASC|DESC]} [, ...])

僅當創建前綴索引的時候才使用len,len為位元組數,

或:

ALTER TABLE tablename
ADD INDEX indexname(column[, ...])

洗掉索引

DROP INDEX indexname ON tablename

或:

ALTER TABLE tablename DROP INDEX indexname

創建視圖

CREATE [OR REPLACE] [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}] VIEW viewname [(colname[, ...])]
AS select_statement [WITH [CASCADE|LOCAL] CHECK OPTION]

WITH [CASCADE|LOCAL] CHECK OPTION表示允許更新記錄的條件,默認是CASCADE

  • LOCAL表示更新后的記錄只要滿足本視圖的條件就可以更新,
  • CASCADE表示更新后的記錄必須滿足本視圖關聯的所有視圖(包括創建本視圖使用的視圖)的條件才可以更新,

修改視圖

ALTER [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}] VIEW viewname [(colname[, ...])]
AS select_statement [WITH [CASCADE|LOCAL] CHECK OPTION]

洗掉視圖

DROP VIRW [IF EXISTS] viewname[, ...] [RESTRICT|CASCADE]

存盤程序和函式

存盤程序和函式相關DDL陳述句于“存盤程序和函式”文章中描述,

創建事件

CREATE EVENT eventname
ON SCHEDULE {AT timestamp [+ INTERVAL n interval]}|{EVERY n interval}
DO
statement_list

interval可為:YEARQUARTERMONTHDAYHOURMINUTEWEEKSECONDYEAR_MONTHDAY_HOURDAY_MINUTEDAY_SECONDHOUR_MINUTEHOUR_SECONDMINUTE_SECOND,與函式DATE_ADD類似,

如果事件調度器狀態是關閉的,需使用SET GLOBAL event_scheduler = 1打開,事件才能生效,

修改事件

禁用事件:

ALTER EVENT eventname DISABLE

洗掉事件

DROP EVENT eventname

創建觸發器

CREATE TRIGGER triggername BEFORE|AFTER INSERT|UPDATE|DELETE
ON tablename FOR EACH ROW
statement_list

觸發時間如下:

  • BEFORE指在檢查約束前觸發,
  • AFTER指在檢查約束后觸發,

觸發器只能創建在永久表上,不能對臨時表創建觸發器,對同一個表相同觸發時間的相同觸發事件,只能定義一個觸發器,

洗掉觸發器

DROP TRIGGER [dbname.]triggername

DML陳述句

DML陳述句,即資料操縱陳述句(Data Manipulation Languages),其關鍵字包括:INSERTUPDATEDELETESELECT

插入記錄

INSERT [LOW_PRIORITY|DELAYED|HIGH_PRIORITY] INTO tablename [(colname1[, ...])] VALUES
(record1_value1[, ...])[, ...]
[ON DUPLICATE KEY UPDATE colname2=value2[, ...]]

當不指定欄位名時,值的順序需與表定義的欄位排列順序一致,

也可以使用如下的方式指定欄位值:

INSERT INTO tablename SET {colname = value}[, ...]

使用查詢的結果插入記錄:

INSERT INTO tablename select_statement

更新記錄

UPDATE tablename SET {colname = value}[, ...] [WHERE condition1 [AND|OR condition2][...]]

或:

UPDATE tablename[, ...] SET {[tablename.]colname = value}[, ...] [WHERE condition1 [AND|OR condition2][...]]

洗掉記錄

DELETE FROM tablename [WHERE condition1 [AND|OR condition2][...]]

或:

DELETE tablename1[, ...] FROM tablename1[, ...] [WHERE condition1 [AND|OR condition2][...]]

查詢記錄

SELECT *|{[DISTINCT] {constant|[@|@@]variable|colname1 [AS alias1]}[, ...]}
FROM tablename[, ...]
[WHERE condition1 [AND|OR condition2][...]]
[GROUP BY colname2[, ...]] [WITH ROLLUP]
[HAVING having_condition1 [AND|OR having_condition2][...]]
[ORDER BY NULL|{{colname3 [DESC|ASC]}[, ...]}]
[LIMIT [offset_start,] row_count]
[INTO OUTFILE 'filename'
	[FIEDLS [TERMINATED BY 'string'] [[OPTIONALLY] ENCLOSED BY 'char'] [ESCAPED BY 'char']]
	[LINES [STARTING BY 'string'] [TERMINATED BY 'string']]
]
[{LOCK IN SHARE MODE}|{FOR UPDATE}]

WITH ROLLUP表示對分類聚合后的結果進行再匯總,不能和ORDER BY同時使用,

ORDER BY子句中,NULL為禁止排序,DESC為降序,ASC為升序,默認為ASC

LIMIT子句中,,offset_start默認為0,即第一條記錄,

表別名:

SELECT t.colname FROM table t

表連接:

SELECT *
FROM tablename1
{[INNER]|LEFT|RIGHT JOIN tablename2 ON condition}[ ...]

左連接包含左表中所有記錄,右表可能出現空記錄;右連接包含右表所有記錄,左表可能出現空記錄,默認為內連接,內連接也可以如下形式:

SELECT *
FROM tablename1, tablename2 WHERE condition

常見的子查詢:

SELECT * FROM tablename1 WHERE colname1 [NOT] IN (SELECT colname2 FROM tablename2)
SELECT * FROM tablename1 WHERE colname1 =|!= (SELECT colname2 FROM tablename2)
SELECT * FROM tablename1 WHERE [NOT] EXISTS (SELECT * FROM tablename2 WHERE tablename1.colname1 = tablename2.colname2)
SELECT * FROM tablename1, (SELECT * FROM tablename) tablename2 WHERE condition

第二種用法僅適用于子查詢只回傳一行記錄的情況,

聯合:

select_statement1
{UNION [ALL] select_statement2}
[...]

偽表名:

SELECT something [FROM DUAL]

不使用ALL會對記錄進行排重,

SELECT INTO OUTFILE使用的格式選項含義如下:

  • FIELDS TERMINATED BY 'string':欄位分隔字串,默認為'\t',
  • FIELDS [OPTIONALLY] ENCLOSED BY 'char':欄位參考符,默認為空,如加上OPTIONALLY則只用在字串型別欄位上,
  • FIELDS ESCAPED BY 'char':轉義字符,默認為'',
  • LINES STARTING BY 'string':行首字串,默認為空,
  • LINES TERMINATED BY 'string':行結束字串,默認為'\n',

相應的,LOAD DATA INFILE的陳述句如下:

LOAD DATA [LOCAL] INFILE 'filename' INTO TABLE tablename
[FIEDLS [TERMINATED BY 'string'] [[OPTIONALLY] ENCLOSED BY 'char'] [ESCAPED BY 'char']]
[LINES [STARTING BY 'string'] [TERMINATED BY 'string']]
[IGNORE n LINES]
[(colname[, ...])]
[SET {colname=expr}[, ...]]

LOCAL表示從客戶端本地讀取檔案,默認從服務器讀取檔案,

大多數選項都與SELECT INTO OUTFILE相同,新增的選項含義如下:

  • IGNORE n LINES:忽略輸入檔案中的前n行資料,
  • (colname[, ...]):按照列出的欄位順序和欄位數量加載資料,
  • SET {colname=expr}[, ...]:將列做一定的值轉換后再加載,

DCL陳述句

DCL陳述句,即資料控制陳述句(Data Control Languages),其關鍵字包括:GRANTREVOKE

授予權限

可同時創建用戶,

GRANT {USAGE|ALL|{privtype[, ...]} [(column[, ...]])}[, ...]
ON [TABLE|FUNCTION|PROCEDURE] *|*.*|dbname.*|tablename
TO {{user|'user'}@{host|'host'} [IDENTIFIED BY [PASSWORD] 'password'] [REQUIRE SSL]}[, ...]
[WITH [GRANT OPTION] [resource_option[...]]]

USAGE只用于資料庫登錄,不能執行任何操作,

priv_type為SELECT|INSERT|UPDATE|DELETE|INDEX|ALTER|CREAATE|DROP|GRANT|CREATE VIEW|SHOW VIEW|CREATE ROUTINE|ALTER ROUTINE|REFERENCES|RELOAD|SHUTDOWN|PROCESS|FILE|SHOW DB|SUPER|CREATE TMP TABLE|LOCK TABLES|EXECUTE|REPL SLAVE|REPL CLIENT,大多與mysql資料庫user表的*_priv對應,

管理權限不能指定資料庫,ON后必須跟*.*

使用PASSWORD表示password是經過PASSWORD函式加密的,

resource_option包括,設定為0表示洗掉限制:

  • MAX_QUERIES_PER_HOUR count
  • MAX_UPDATES_PER_HOU count
  • MAX_CONNECTIONS_PER_HOUR count
  • MAX_USER_CONNECTIONS count

回收權限

REVOKE {ALL|{priv_type|GRANT OPTION[,...]} [colname[, ...]]}[, ...]
ON [TABLE|FUNCTION|PROCEDURE] *|*.*|dbname.*|tablename
FROM {user|'user'}@{host|'host'}[, ...]

USAGE權限不能被回收,亦即,REVOKE不能洗掉用戶,

此外,還有以下用于權限控制的陳述句:

創建用戶

CREATE USER {user|'user'}@{host|'host'}
IDENTIFIED [WITH auth_plugin] BY [PASSWORD] 'password'

user為''表示任何用戶,host為''、*、或%(含義與LIKE相同)表示任何外部主機,不包括localhost,

auth_plugin可使用:

  • mysql_native_password
  • caching_sha2_password

使用PASSWORD表示password是經過PASSWORD函式加密的,

修改用戶

ALTER USER {user|'user'}@{host|'host'}
IDENTIFIED [WITH auth_plugin] BY [PASSWORD] 'password'

洗掉用戶

DROP USER {user|'user'}@{host|'host'}[, ...]

修改密碼

SET PASSWORD [FOR {user|'user'}@{host|'host'}] = PASSWORD('password')

查看權限

SHOW GRANTS [FOR {user|'user'}@{host|'host'}]

其他陳述句

分析、檢查、優化、修復表

ANALYZECHECKOPTIMIZEREPAIR執行期間都會對表進行鎖定,

分析表,使得SQL能夠生成正確的執行計劃,如果感覺實際的執行計劃并不符合預期,進行分析表可能會解決問題:

ANALYZE [LOCAL|NO_WRITE_TO_BINLOG] TABLE tablename[, ...]

檢查表,用于檢查表或視圖是否有錯誤(如視圖定義中被參考的表不存在):

CHECK TABLE tablename[, ...] [{QUICK|FAST|MEDIUM|EXTENDED|CHANGED}[...]]

優化表,可以將表中的碎片空間進行合并,如果已經洗掉表的很大一部分資料,或已經對含有可變長度行(含有VARCHARBLOBTEXT的列)的表進行很多更改,則應該進行優化表:

OPTIMIZE [LOCAL|NO_WRITE_TO_BINLOG] TABLE tablename[, ...]

修復表,對壞表進行修復:

REPAIR [LOCAL|NO_WRITE_TO_BINLOG] TABLE tablename[, ...] [{QUICK|EXTENDED|USE_FRM}[...]]

SHOW

關于SHOW陳述句的詳情參閱官方檔案:https://dev.mysql.com/doc/refman/5.7/en/show.html,

SHOW陳述句回傳元資料資訊,元資料資訊大多保存在information_schema庫中,

陳述句 作用
SHOW BINLOG EVENTS [IN 'filename'] [FROM position] 列出二進制日志事件
SHOW CHARACTER SET [LIKE 'pattern'] 列出服務器支持的字符集
SHOW COLLATION [LIKE 'pattern'] 列出服務器支持的字符集校對規則
SHOW [FULL] COLUMNS FROM [dbname.]tablename [LIKE 'pattern'] 列出列
SHOW CREATE DATABASE dbname 列出創建資料庫陳述句
SHOW CREATE EVENT eventname 列出創建事件陳述句
SHOW CREATE FUNCTION funcname 列出創建函式陳述句
SHOW CREATE PROCEDURE procname 列出創建存盤程序陳述句
SHOW CREATE TABLE [dbname.]tablename 列出創建表陳述句
SHOW CREATE TRIGGER triggername 列出創建觸發器陳述句
SHOW CREATE VIEW [dbname.]viewname 列出創建視圖陳述句
SHOW DATABASES [LIKE 'pattern'] 列出資料庫
SHOW ENGINE engine STATUS 列出存盤引擎狀態(如:INNODB)
SHOW ENGINES 列出服務器支持的存盤引擎
SHOW ERRORS 列出服務器出現的錯誤
SHOW EVENTS 列出事件
SHOW FUNCTION CODE funcname 列出函式代碼
SHOW FUNCTION STATUS [LIKE 'pattern'] 列出函式狀態
SHOW GRANTS [FOR {user|'user'}@{host|'host'}] 列出賬號權限
SHOW INDEX FROM [dbname.]tablename 列出索引
SHOW [BINARY/MASTER] LOGS 列出二進制日志檔案
SHOW MASTER STATUS 列出主庫狀態
SHOW OPEN TABLES [FROM dbname] [LIKE 'pattern'] 列出打開并快取的表
SHOW PLUGINS 列出已安裝的插件
SHOW PROCEDURE CODE procname 列出存盤程序代碼
SHOW PROCEDURE STATUS [LIKE 'pattern'] 列出存盤程序狀態
SHOW PRIVILEGES 列出權限
SHOW PROCESSLIST 列出服務器執行緒
SHOW PROFILE [ALL|CPU|{BLOCK IO}|{PAGE FAULTS}|SOURCE][, ...] FOR QUERY query_id 列出查詢的分析資訊
SHOW PROFILES 列出可分析的查詢
SHOW RELAYLOG EVENTS [IN 'filename'] [FROM position] 列出中繼日志事件
SHOW SLAVE HOSTS 列出從庫資訊
SHOW SLAVE STATUS 列出從庫狀態
SHOW [SESSION|GLOBAL] STATUS [LIKE 'pattern'] 列出狀態變數,默認為SESSION
SHOW TABLE STATUS [FROM dbname] [LIKE 'pattern'] 列出表和視圖狀態
SHOW [FULL] TABLES [FROM dbname] [LIKE 'pattern'] 列出表和視圖
SHOW TRIGGERS [FROM dbname] [LIKE 'pattern'] 列出觸發器
SHOW [SESSION|GLOBAL] VARIABLES [LIKE 'pattern'] 列出系統變數
SHOW WARNINGS 列出服務器警告

FLUSH

關于FLUSH陳述句的詳情參閱官方檔案:https://dev.mysql.com/doc/refman/5.7/en/flush.html,

陳述句 作用
FLUSH PRIVILEGES 重繪權限,會重新讀取權限表
FLUSH TABLES 重繪表,會關閉所有打開的表,并重繪查詢快取
FLUSH USER_RESOURCES 重繪用戶資源限制,會重置為0

其他

陳述句 作用
DESC tablename statement
EXPLAIN tablename statement
KILL processid 殺死執行緒
SET [SESSION|GLOBAL] [@|@@]variable=value 設定變數值,預設為SESSION
SET NAMES charset 同時修改當前會話的客戶端、連接、回傳結果字符集
START SLAVE 啟動從庫復制執行緒
STOP SLAVE 停止從庫復制執行緒

命令

上述陳述句使用mysql工具互動執行時都需要使用陳述句分隔符(通常為“;”)結尾,但命令不需要,

命令 簡寫 作用
? [topic] ? 同HELP,查看幫助,最頂層主題為contents
CLEAR \c 清除當前陳述句,不會執行
CONNECT [dbname [host]] \r 重新連接服務器
DELIMITER delimiter \d 設定陳述句分隔符
EDIT \e 使用$EDITOR指定的編輯器編輯陳述句
EGO \G 執行陳述句,將結果欄位縱向排列
EXIT \q 同QUIT,退出
GO \g 執行陳述句,將結果欄位橫向排列
HELP [topic] \h 查看幫助
NOPAGER \n 禁用pager,將結果列印至標準輸出
NOTEE \t 禁用tee,不同時將結果追加至檔案
PAGER [systemcommand] \P 設定pager,將結果使用指定的系統命令列印,而不是列印至標準輸出
PRINT \p 列印當前命令
PROMPT [prompt] \R 設定互動提示語
QUIT \q 退出
REHASH \# 重建自動完成哈希
SOURCE filename \. 執行SQL檔案
STATUS \s 查看服務器狀態
SYSTEM [systemcommand] \! 執行系統命令
TEE filename \T 設定tee,同時將結果追加至檔案
USE dbname \u 切換資料庫
CHARSET charset \C 設定字符集
WARNINGS \W 顯示警告資訊
NOWARNING \w 不顯示警告資訊
RESETCONNECTION \x 重置連接回話背景關系

變數

@開頭的變數為用戶變數,@@開頭的變數為系統變數,預設為系統變數,

注釋

#--起至行末的內容都視為注釋,/**/之間所有行的內容也視為注釋,

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/26187.html

標籤:MySQL

上一篇:MySQL 表約束

下一篇:學習通的workId元素為什么找不到了,是不是被隱藏了

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:33:24 more
  • MySQL中binlog備份腳本分享

    關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......

    uj5u.com 2023-04-20 08:28:06 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:27:27 more
  • 快取與資料庫雙寫一致性幾種策略分析

    本文將對幾種快取與資料庫保證資料一致性的使用方式進行分析。為保證高并發性能,以下分析場景不考慮執行的原子性及加鎖等強一致性要求的場景,僅追求最終一致性。 ......

    uj5u.com 2023-04-20 08:26:48 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:26:35 more
  • 云時代,MySQL到ClickHouse資料同步產品對比推薦

    ClickHouse 在執行分析查詢時的速度優勢很好的彌補了MySQL的不足,但是對于很多開發者和DBA來說,如何將MySQL穩定、高效、簡單的同步到 ClickHouse 卻很困難。本文對比了 NineData、MaterializeMySQL(ClickHouse自帶)、Bifrost 三款產品... ......

    uj5u.com 2023-04-20 08:26:29 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:25:13 more
  • Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)

    Redis 報錯“OutOfDirectMemoryError(堆外記憶體溢位) ”問題如下: 一、報錯資訊: 使用 Redis 的業務介面 ,產生 OutOfDirectMemoryError(堆外記憶體溢位),如圖: 格式化后的報錯資訊: { "timestamp": "2023-04-17 22: ......

    uj5u.com 2023-04-20 08:24:54 more
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:24:03 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:23:11 more