主頁 > 資料庫 > MySQL基礎:SELECT查詢陳述句

MySQL基礎:SELECT查詢陳述句

2020-09-13 08:59:34 資料庫

blog:https://www.cnblogs.com/Rohn/

目錄
  • 概述
    • 語法格式
    • 資料庫案例
  • 常用語法
    • 使用*查詢表中的全部內容
      • 語法格式
      • 實體
    • 查詢表中指定的欄位
      • 語法格式
      • 實體
    • 過濾重復資料(去重)
      • 語法格式
      • 實體
    • 設定別名
      • 表別名
        • 語法格式
        • 實體
      • 欄位別名
        • 語法格式
    • 限制查詢結果的記錄條數
      • 語法格式
      • 實體
    • 對查詢結果進行排序
      • 語法格式
      • 實體
    • 條件查詢
      • 語法格式
      • 實體
    • 內連接查詢
      • 語法格式
      • 實體
    • 外連接查詢
      • 左外連接查詢
        • 實體
      • 右外連接查詢
        • 實體
    • 子查詢
      • IN子查詢
        • 語法格式
      • 比較運算子子查詢
        • 語法格式
        • 實體
      • EXIST子查詢
        • 語法格式
    • 分組查詢
      • 語法格式
      • 實體
    • 指定過濾條件
      • 語法格式
      • 實體
    • 正則運算式查詢
      • 實體

概述

SELECT陳述句用于從表中選取/查詢資料,結果被存盤在一個結果表中(稱為結果集),

語法格式

SELECT
    [ALL | DISTINCT | DISTINCTROW ]
    [HIGH_PRIORITY]
    [STRAIGHT_JOIN]
    [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
    [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
    select_expr [, select_expr] ...
    [into_option]
    [FROM table_references
      [PARTITION partition_list]]
    [WHERE where_condition]
    [GROUP BY {col_name | expr | position}
      [ASC | DESC], ... [WITH ROLLUP]]
    [HAVING where_condition]
    [ORDER BY {col_name | expr | position}
      [ASC | DESC], ...]
    [LIMIT {[offset,] row_count | row_count OFFSET offset}]
    [PROCEDURE procedure_name(argument_list)]
    [into_option]
    [FOR UPDATE | LOCK IN SHARE MODE]

into_option: {
    INTO OUTFILE 'file_name'
        [CHARACTER SET charset_name]
        export_options
  | INTO DUMPFILE 'file_name'
  | INTO var_name [, var_name] ...
}

資料庫案例

  • 下載地址
shell> unzip test_db-master.zip
shell> cd test_db-master/

# 設定引擎為InnoDB
shell> set storage_engine = InnoDB

# 執行初始化sql
shell> mysql -t < employees.sql
+-----------------------------+
| INFO                        |
+-----------------------------+
| CREATING DATABASE STRUCTURE |
+-----------------------------+
+------------------------+
| INFO                   |
+------------------------+
| storage engine: InnoDB |
+------------------------+
+---------------------+
| INFO                |
+---------------------+
| LOADING departments |
+---------------------+
+-------------------+
| INFO              |
+-------------------+
| LOADING employees |
+-------------------+
+------------------+
| INFO             |
+------------------+
| LOADING dept_emp |
+------------------+
+----------------------+
| INFO                 |
+----------------------+
| LOADING dept_manager |
+----------------------+
+----------------+
| INFO           |
+----------------+
| LOADING titles |
+----------------+
+------------------+
| INFO             |
+------------------+
| LOADING salaries |
+------------------+

表說明:

  • departments:記錄的是9個部門的部門編號和部門名稱;
  • dept_emp:部門員工資料,員工id和部門id,其實時間和結束時間(注:9999的意思就是仍在職);
  • dept_manger:同第二張表結構差不多,每個部門的每個經理的任職時期,總共就24個人,每個部門至少有過兩個經理;
  • employees:員工資訊表,emp_no是唯一鍵值;
  • salaries:記錄每個員工每段時期的薪資;
  • title:記錄每個員工每段時期的職位名稱,但請注意,周期與第五張表是不同的,因為在同一職位上你也是會漲工資的;

模型如下:

image

常用語法

使用*查詢表中的全部內容

SELECT陳述句中使用星號*通配符查詢所有欄位,

語法格式

語法格式如下:

SELECT * FROM 表名;

實體

例如,從employees表中檢索所有欄位的資料

SELECT * FROM employees;

輸出結果如下:
image

查詢表中指定的欄位

語法格式

查詢表中的某一個欄位的語法格式為:

SELECT < 列名 > FROM < 表名 >;

實體

例如,查詢employees表中所有員工的firstname,

SELECT first_name FROM employees;

例如,查詢employees表中所有員工的firstname、lastname及生日,

SELECT first_name,last_name,birth_date FROM employees;

過濾重復資料(去重)

有時出于對資料分析的要求,需要消除重復的記錄值,這時候就需要用到DISTINCT關鍵字指示MySQL消除重復的記錄值,

語法格式

語法格式為:

SELECT DISTINCT <欄位名> FROM <表名>;

實體

例如,查詢employees表中所有員工的生日(去掉重復),

SELECT DISTINCT birth_date FROM employees;

設定別名

表別名

在使用MySQL查詢時,當表名很長或者執行一些特殊查詢的時候,為了方便操作或者需要多次使用相同的表時,可以為表指定別名,用這個別名代替表原來的名稱,

語法格式

語法格式如下:

<表名> [AS] <別名>

實體

例如,查詢員工每個時期的薪資,

SELECT sa.salary FROM salaries AS sa;

欄位別名

在使用SELECT陳述句顯示查詢結果時,MySQL會顯示每個SELECT后面指定輸出的欄位,在有些情況下,顯示的欄位名稱會很長或者名稱不夠直觀,MySQL可以指定欄位的別名,替換欄位或運算式,

語法格式

<欄位名> [AS] <欄位別名>

限制查詢結果的記錄條數

在使用MySQL SELECT陳述句時往往回傳的是所有匹配的行,有些時候我們僅需要回傳第一行或者前幾行,這時候就需要用到MySQLLIMT子句,

LIMIT接受一個或兩個數字引數,引數必須是一個整數常量,如果給定兩個引數,第一個引數指定第一個回傳記錄行的偏移量,第二個引數指定回傳記錄行的最大數目,

第一個引數“位置偏移量”指示 MySQL 從哪一行開始顯示,是一個可選引數,如果不指定“位置偏移量”,將會從表中的第一條記錄開始(第一條記錄的位置偏移量是 0,第二條記錄的位置偏移量是 1,以此類推);第二個引數“行數”指示回傳的記錄條數,

語法格式

語法格式如下:

<LIMIT> [<位置偏移量>,] <行數>

實體

例如,查詢employees表中第3條起的10條資料,

mysql> SELECT * FROM employees LIMIT 2,10;
+--------+------------+------------+-----------+--------+------------+
| emp_no | birth_date | first_name | last_name | gender | hire_date  |
+--------+------------+------------+-----------+--------+------------+
|  10003 | 1959-12-03 | Parto      | Bamford   | M      | 1986-08-28 |
|  10004 | 1954-05-01 | Chirstian  | Koblick   | M      | 1986-12-01 |
|  10005 | 1955-01-21 | Kyoichi    | Maliniak  | M      | 1989-09-12 |
|  10006 | 1953-04-20 | Anneke     | Preusig   | F      | 1989-06-02 |
|  10007 | 1957-05-23 | Tzvetan    | Zielinski | F      | 1989-02-10 |
|  10008 | 1958-02-19 | Saniya     | Kalloufi  | M      | 1994-09-15 |
|  10009 | 1952-04-19 | Sumant     | Peac      | F      | 1985-02-18 |
|  10010 | 1963-06-01 | Duangkaew  | Piveteau  | F      | 1989-08-24 |
|  10011 | 1953-11-07 | Mary       | Sluis     | F      | 1990-01-22 |
|  10012 | 1960-10-04 | Patricio   | Bridgland | M      | 1992-12-18 |
+--------+------------+------------+-----------+--------+------------+
10 rows in set (0.00 sec)

對查詢結果進行排序

ORDER BY子句主要用來將結果集中的資料按照一定的順序進行排序,

語法格式

語法格式如下:

SELECT field1, field2,...fieldN FROM table_name1, table_name2...
ORDER BY field1 [ASC [DESC][默認 ASC]], [field2...] [ASC [DESC][默認 ASC]]

關鍵字ASC表示按升序分組,關鍵字DESC表示按降序分組,其中ASC為默認值,這兩個關鍵字必須位于對應的欄位名、運算式、列的位置之后,

實體

例如,根據出生日期降序排序,查詢employees表所有員工資訊,

SELECT * FROM employees ORDER BY birth_date DESC;

例如,根據出生日期降序、員工編號升序排序,查詢employees表所有員工資訊,

SELECT * FROM employees ORDER BY birth_date DESC,emp_no ASC;

條件查詢

使用WHERE子句來指定查詢條件,從FROM子句的中間結果中選取適當的資料行,達到資料過濾的效果,

語法格式

語法格式如下:

SELECT field1, field2,...fieldN FROM table_name1, table_name2...
[WHERE condition1 [AND [OR]] condition2.....

說明:

  • 查詢陳述句中你可以使用一個或者多個表,表之間使用逗號,分割,并使用WHERE陳述句來設定查詢條件;
  • 你可以在WHERE子句中指定任何條件;
  • 你可以使用AND或者OR指定一個或多個條件;
  • WHERE子句也可以運用于SQL的DELETE或者UPDATE命令;
  • WHERE子句類似于程式語言中的if條件,根據MySQL表中的欄位值來讀取指定的資料;

實體

例如,查詢employees表所有firstname叫Zhonghua的員工資訊,

SELECT * FROM employees WHERE first_name = 'Zhonghua';

內連接查詢

內連接是通過在查詢中設定連接條件的方式,來移除查詢結果集中某些資料行后的交叉連接,簡單來說,就是利用條件運算式來消除交叉連接的某些資料行,

在MySQL FROM子句中使用關鍵字 INNER JOIN連接兩張表,并使用 ON子句來設定連接條件,如果沒有任何條件,INNER JOINCROSS JOIN在語法上是等同的,兩者可以互換,

語法格式

語法格式如下:

SELECT <欄位名1,欄位名2 …>
FROM <表名1> INNER JOIN <表名2> [ ON子句]

內連接是系統默認的表連接,所以在FROM子句后可以省略INNER 關鍵字,只用關鍵字 JOIN,使用內連接后,FROM 子句中的ON子句可用來設定連接表的條件,

實體

例如,查詢所有人的title,

SELECT e.emp_no,e.first_name,e.last_name,t.title,t.from_date,t.to_date FROM `employees` e JOIN titles t WHERE e.emp_no = t.emp_no;

外連接查詢

內連接是在交叉連接的結果集上回傳滿足條件的記錄;而外連接先將連接的表分為基表參考表,再以基表為依據回傳滿足和不滿足條件的記錄,

外連接更加注重兩張表之間的關系,按照連接表的順序,可以分為左外連接右外連接

左外連接查詢

左外連接又稱為左連接,在 FROM子句中使用關鍵字LEFT OUTER JOIN或者LEFT JOIN,用于接收該關鍵字左表(基表)的所有行,并用這些行與該關鍵字右表(參考表)中的行進行匹配,即匹配左表中的每一行及右表中符合條件的行

在左外連接的結果集中,除了匹配的行之外,還包括左表中有但在右表中不匹配的行,對于這樣的行,從右表中選擇的列的值被設定為 NULL,即左外連接的結果集中的 NULL值表示右表中沒有找到與左表相符的記錄

實體

例如,查詢所有員工的部門編號,

SELECT e.emp_no,e.first_name,e.last_name,d.dept_no FROM `employees` e LEFT JOIN`dept_emp` d on e.emp_no = d.emp_no;

右外連接查詢

右外連接又稱為右連接,在FROM子句中使用RIGHT OUTER JOIN或者RIGHT JOIN,與左外連接相反,右外連接以右表為基表,連接方法和左外連接相同,在右外連接的結果集中,除了匹配的行外,還包括右表中有但在左表中不匹配的行,對于這樣的行,從左表中選擇的值被設定為NULL

實體

例如,查詢所有員工的部門編號,

SELECT e.first_name,e.last_name,d.dept_no FROM employees e RIGHT JOIN dept_emp d ON e.emp_no = d.emp_no;

子查詢

子查詢指一個查詢陳述句嵌套在另一個查詢陳述句內部的查詢,這個特性從 MySQL 4.1 開始引入,在SELECT 子句中先計算子查詢,子查詢結果作為外層另一個查詢的過濾條件,查詢可以基于一個表或者多個表,

子查詢中常用的運算子有ANY(SOME)ALLINEXISTS

子查詢可以添加到SELECTUPDATEDELETE陳述句中,而且可以進行多層嵌套,子查詢也可以使用比較運算子,如<<=>>=!=等,

IN子查詢

結合關鍵字IN所使用的子查詢主要用于判斷一個給定值是否存在于子查詢的結果集中,

語法格式

語法格式為:

<運算式> [NOT] IN <子查詢>

語法說明如下:

  • <運算式>:用于指定運算式,當運算式與子查詢回傳的結果集中的某個值相等時,回傳TRUE,否則回傳FALSE;若使用關鍵字NOT,則回傳的值正好相反,
  • <子查詢>:用于指定子查詢,這里的子查詢只能回傳一列資料,對于比較復雜的查詢要求,可以使用SELECT 陳述句實作子查詢的多層嵌套,

比較運算子子查詢

比較運算子所使用的子查詢主要用于對運算式的值和子查詢回傳的值進行比較運算,

語法格式

其語法格式為:

<運算式> {= | < | > | >= | <= | <=> | < > | != }
{ ALL | SOME | ANY} <子查詢>

語法說明如下:

  • <子查詢>:用于指定子查詢,
  • <運算式>:用于指定要進行比較的運算式,
  • ALLSOMEANY:可選項,用于指定對比較運算的限制,其中,關鍵字ALL用于指定運算式需要與子查詢結果集中的每個值都進行比較,當運算式與每個值都滿足比較關系時,會回傳TRUE,否則回傳FALSE;關鍵字SOMEANY 是同義詞,表示運算式只要與子查詢結果集中的某個值滿足比較關系,就回傳TRUE,否則回傳FALSE

實體

例如,查詢Giri Koblick歷年工資,

SELECT * FROM salaries WHERE emp_no in (SELECT emp_no FROM employees WHERE first_name = 'Giri' AND last_name = 'Koblick');

結果如下:

+--------+--------+------------+------------+
| emp_no | salary | from_date  | to_date    |
+--------+--------+------------+------------+
|  26466 |  73178 | 1999-07-26 | 2000-07-25 |
|  26466 |  77529 | 2000-07-25 | 2001-07-25 |
|  26466 |  81844 | 2001-07-25 | 2002-07-25 |
|  26466 |  84824 | 2002-07-25 | 9999-01-01 |
+--------+--------+------------+------------+

EXIST子查詢

關鍵字EXISTS所使用的子查詢主要用于判斷子查詢的結果集是否為空,

語法格式

其語法格式為:

EXISTS <子查詢>

若子查詢的結果集不為空,則回傳TRUE;否則回傳FALSE

分組查詢

在MySQL SELECT陳述句中,允許使用GROUP BY子句,將結果集中的資料行根據選擇列的值進行邏輯分組,以便能匯總表內容的子集,實作對每個組而不是對整個結果集進行整合,

語法格式

語法格式如下:

GROUP BY { <欄位名> | <運算式> | <位置> } [ASC | DESC]

說明:

  • <欄位名>:指定用于分組的欄位,可以指定多個欄位,彼此間用逗號分隔,
  • <運算式>:指定用于分組的運算式,通常與聚合函式一塊使用,例如可將運算式COUNT(*)AS' 人數 '作為 SELECT 選擇串列清單的一項,
  • <位置>:指定用于分組的選擇欄位在SELECT陳述句結果集中的位置,通常是一個正整數,例如,GROUP BY 2表示根據SELECT 陳述句列清單上的第2欄位的值進行邏輯分組,
  • ASC|DESC:關鍵字ASC表示按升序分組,關鍵字DESC表示按降序分組,其中ASC為默認值,注意這兩個關鍵字必須位于對應的欄位名、運算式、欄位的位置之后,

GROUP BY必須得配合聚合函式來用,分組之后你可以計數(COUNT),求和(SUM),求平均數(AVG)等,

對于GROUP BY子句的使用,需要注意以下幾點,

  • GROUP BY子句可以包含任意數目的列,使其可以對分組進行嵌套,為資料分組提供更加細致的控制,
  • GROUP BY子句列出的每個列都必須是檢索列或有效的運算式,但不能是聚合函式,若在SELECT陳述句中使用運算式,則必須在 GROUP BY子句中指定相同的運算式,
  • 除聚合函式之外,SELECT陳述句中的每個列都必須在GROUP BY子句中給出,
  • 若用于分組的列中包含有NULL 值,則NULL將作為一個單獨的分組回傳;若該列中存在多個NULL 值,則將這些NULL值所在的行分為一組,

實體

例如,統計同一天生日的員工:

SELECT GROUP_CONCAT(emp_no),birth_date FROM `employees` GROUP BY birth_date;

例如,統計每個部門有多少在職員工:

SELECT
  dept_no as 部門,
  count(emp_no) as 人數
FROM
  dept_emp 
WHERE
  to_date = '9999-01-01' 
GROUP BY
  dept_no;

結果如下:

+--------+--------+
| 部門   | 人數   |
+--------+--------+
| d001   |  14842 |
| d002   |  12437 |
| d003   |  12898 |
| d004   |  53304 |
| d005   |  61386 |
| d006   |  14546 |
| d007   |  37701 |
| d008   |  15441 |
| d009   |  17569 |
+--------+--------+

指定過濾條件

在MySQL SELECT陳述句中,除了能使用GROUP BY子句分組資料外,還可以使用 HAVING子句過濾分組,在結果集中規定了包含哪些分組和排除哪些分組,

語法格式

語法格式如下:

HAVING <條件>

HAVING子句和WHERE子句非常相似,HAVING子句支持WHERE子句中所有的運算子和語法,但是兩者存在幾點差異:

  • WHERE 子句主要用于過濾資料行,而HAVING子句主要用于過濾分組,即HAVING子句基于分組的聚合值而不是特定行的值來過濾資料,主要用來過濾分組,
  • WHERE 子句不可以包含聚合函式,HAVING子句中的條件可以包含聚合函式,
  • HAVING子句是在資料分組后進行過濾,WHERE子句會在資料分組前進行過濾,WHERE子句排除的行不包含在分組中,可能會影響HAVING子句基于這些值過濾掉的分組,

實體

例如,統計員工人數大于30000的部門,

SELECT
    (SELECT d.dept_name FROM departments d WHERE de.dept_no = d.dept_no) AS 部門,
    count( de.emp_no ) AS 人數 
FROM
    dept_emp de 
WHERE
    de.to_date = '9999-01-01' 
GROUP BY
    de.dept_no 
HAVING
    count(de.emp_no) > 30000; 

結果如下:

+-------------+--------+
| 部門        | 人數   |
+-------------+--------+
| Production  |  53304 |
| Development |  61386 |
| Sales       |  37701 |
+-------------+--------+

正則運算式查詢

MySQL中正式運算式通常被用來檢索或替換符合某個模式的文本內容,根據指定的匹配模式匹配文中符合要求的特殊字串,

MySQL中使用REGEXP關鍵字指定正則運算式的字符匹配模式,下表列出了REGEXP運算子中常用的匹配串列,

image

實體

例如,統計9月2日出生的f開頭lastname的員工,

SELECT * FROM employees WHERE birth_date REGEXP '09-02$' AND last_name REGEXP '^f';

image-20200624104509627

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

標籤:MySQL

上一篇:MySQL 更新陳述句執行程序 WAL redolog binlog

下一篇:mysql日期格式化

標籤雲
其他(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