主頁 > 資料庫 > 補鞋匠都能看明了的sql高階陳述句(資料函式庫(聚合函式、字串函式、日期時間函式)、存盤程序)

補鞋匠都能看明了的sql高階陳述句(資料函式庫(聚合函式、字串函式、日期時間函式)、存盤程序)

2021-04-26 12:21:37 資料庫

資料函式庫+存盤程序

  • 一、MySQL資料庫函式
    • 1.1 數學函式
      • 1.1.1 abs(x)與rand( )
      • 1.1.2 mod(x,y)與power(x,y)
      • 1.1.3 round(x)與round(x,y)
      • 1.1.4 sqrt(x)與truncate(x,y)
      • 1.1.5 ceil(x)與floor(x)
      • 1.1.6 greatest(x1,x2)與least(x1,x2)
    • 1.2 聚合函式
      • 1.2.1 sum( )與count( )
      • 1.2.2 min( )、max( )與avg( )
    • 1.3 字串函式
      • 1.3.1 length(x)與trim( )
      • 1.3.2 concat(x,y)
      • 1.3.3 upper(x) 與lower(x)
      • 1.3.4 left(x,y)與right(x,y)
      • 1.3.5 repeat(x,y) 與space(x)
      • 1.3.6 replace(x,y,z)與strcmp(x,y)
      • 1.3.7 substring(x,y,z) 與reverse(x)
    • 1.4 日期時間函式
      • 1.4.1 curdate( )、curtime( )與now( )
      • 1.4.2 year(x)、month(x)和week(x)
      • 1.4.3 hour(x)、minute(x)、second(x)
      • 1.4.4 dayofweek(x)、dayofmonth(x)、dayofyear(x)
  • 二、MySQL存盤程序
    • 2.1 MySQL存盤程序概述
    • 2.2 MySQL存盤程序優點
    • 2.3 MySQL存盤程序創建
      • 2.3.1 不帶引數的創建MySQL存盤程序
      • 2.3.2 MySQL帶引數的存盤程序
  • 四、總結
    • 1. MySQL資料庫函式
    • 2. MySQL存盤程序

一、MySQL資料庫函式

  • MySQL資料庫函式提供了能夠實作各種功能的方法,使我們在查詢記錄時能夠更高效的輸出
  • MySQL內建了很多函式,常用的包括數學函式、聚合函式、字串函式和日期時間函式

1.1 數學函式

  • 資料庫記憶體儲的記錄經常要進行一系列的算術操作,所以MySQL支持很多數學函式
  • 常用的數學函式如下表
數學函式說明
abs(x)回傳x的絕對值
rand( )回傳0到1的亂數
mod(x,y)回傳x除y以后的余數
power(x,y)回傳x的y次方
round(x)回傳距離x最近的整數
round(x,y)保留x的y位小數四舍五入后的值
sqrt(x)回傳x的平方根
truncate(x,y)回傳數字x截斷為y位小數的值
ceil(x)回傳大于或等于x的最小整數
floor(x)回傳小于或等于x的最大整數
greatest(x1,x2)回傳集合中最大的值
least(x1,x2)回傳集合中最小的值

1.1.1 abs(x)與rand( )

【回傳-5514的絕對值】
mysql> select abs(-5514);
+------------+
| abs(-5514) |
+------------+
|       5514 |
+------------+

【回傳0-1的亂數(0<=x<1)】
mysql> select rand();
+--------------------+
| rand()             |
+--------------------+
| 0.8426012078696873 |
+--------------------+

【可以搭配運算子使用】
mysql> select rand()*10000000;
+-------------------+
| rand()*10000000   |
+-------------------+
| 5140734.682922005 |
+-------------------+

1.1.2 mod(x,y)與power(x,y)

【回傳7除以4的余數】
mysql> select mod(7,4);
+----------+
| mod(7,4) |
+----------+
|        3 |
+----------+

【回傳210次方】
mysql> select power(2,10);
+-------------+
| power(2,10) |
+-------------+
|        1024 |
+-------------+

1.1.3 round(x)與round(x,y)

【回傳距離5514.49最近的整數(四舍五入)】
mysql> select round(5514.49);
+----------------+
| round(5514.49) |
+----------------+
|           5514 |
+----------------+


mysql> select round(5514.5);
+---------------+
| round(5514.5) |
+---------------+
|          5515 |
+---------------+


mysql> select round(5514.500001);
+--------------------+
| round(5514.500001) |
+--------------------+
|               5515 |
+--------------------+


【回傳5.144保留小數點后3位的數(四舍五入)】
mysql> select round(5.144,2);
+----------------+
| round(5.144,2) |
+----------------+
|           5.14 |
+----------------+

mysql> select round(5.145,2);
+----------------+
| round(5.145,2) |
+----------------+
|           5.15 |
+----------------+

mysql> select round(5.1450000001,2);
+-----------------------+
| round(5.1450000001,2) |
+-----------------------+
|                  5.15 |
+-----------------------+

1.1.4 sqrt(x)與truncate(x,y)

【回傳平方根】
mysql> select sqrt(9);
+---------+
| sqrt(9) |
+---------+
|       3 |
+---------+

mysql> select sqrt(8);
+--------------------+
| sqrt(8)            |
+--------------------+
| 2.8284271247461903 |
+--------------------+


【保留小數點后4位,后面直接截斷(不會四舍五入)】
mysql> select truncate(2.332124,4);
+----------------------+
| truncate(2.332124,4) |
+----------------------+
|               2.3321 |
+----------------------+

mysql> select truncate(2.332199,4);
+----------------------+
| truncate(2.332199,4) |
+----------------------+
|               2.3321 |
+----------------------+

1.1.5 ceil(x)與floor(x)

【回傳大于或等于5.000000001的最小整數】
mysql> select ceil(5.000000001);
+-------------------+
| ceil(5.000000001) |
+-------------------+
|                 6 |
+-------------------+

mysql> select ceil(5.000000);
+----------------+
| ceil(5.000000) |
+----------------+
|              5 |
+----------------+

【回傳小于或等于8.9999999的最大整數】
mysql> select floor(8.999999);
+-----------------+
| floor(8.999999) |
+-----------------+
|               8 |
+-----------------+

mysql> select floor(8.00000);
+----------------+
| floor(8.00000) |
+----------------+
|              8 |
+----------------+

1.1.6 greatest(x1,x2)與least(x1,x2)

【回傳結合中最大的值】
mysql> select greatest(5,35,44);
+-------------------+
| greatest(5,35,44) |
+-------------------+
|                44 |
+-------------------+

mysql> select greatest(0.12,-0.32,0.01);
+---------------------------+
| greatest(0.12,-0.32,0.01) |
+---------------------------+
|                      0.12 |
+---------------------------+

mysql> select greatest(0.12,0.32,0.01);
+--------------------------+
| greatest(0.12,0.32,0.01) |
+--------------------------+
|                     0.32 |
+--------------------------+


【回傳集合中最小的值】
mysql> select least(0.12,0.32,0.01);
+-----------------------+
| least(0.12,0.32,0.01) |
+-----------------------+
|                  0.01 |
+-----------------------+
1 row in set (0.00 sec)

mysql> select least(0.12,-0.32,0.01);
+------------------------+
| least(0.12,-0.32,0.01) |
+------------------------+
|                  -0.32 |
+------------------------+
1 row in set (0.00 sec)

mysql> select least(5,35,44);
+----------------+
| least(5,35,44) |
+----------------+
|              5 |
+----------------+

1.2 聚合函式

  • MySQL資料庫函式中專門有一組函式是特意為庫內記錄求和或者對表中的資料進行集中概括而設計的,這些函式被稱作聚合函式
  • 常用的聚合函式如下表
函式說明
avg( )回傳指定列的平均值
count( )回傳指定列中非NULL值的個數
min( )回傳指定列的最小值
max( )回傳指定列的最大值
sum( )回傳指定列的所有值之和

1.2.1 sum( )與count( )

mysql> select * from qz1;
+--------+--------------+---------+--------+--------+--------+
| 編號   | 姓名         | 得分    | 地址   | 特長   | addr   |
+--------+--------------+---------+--------+--------+--------+
|      1 | 劉一         |  80.000 | 北京   | 2      | NULL   |
|      2 | 王二         |  90.000 | 深圳   | 2      | 南京   |
|      3 | 李四         |  60.000 | 上海   | 4      | NULL   |
|      4 | 田五         |  99.000 | 南京   | 5      | 南京   |
|      5 | 教授         | 100.000 | 成都   | 3      | 南京   |
|      6 | 小明         |  10.000 | 鎮江   | 3      | NULL   |
|      7 | 劉二         |  60.000 | 北京   | 2      | NULL   |
|      8 | 劉二蛋       | 112.000 | 北京   | 3      | 南京   |
|      9 | 劉小天田     | 112.000 | 北京   | 4      |        |
+--------+--------------+---------+--------+--------+--------+

【回傳qz1表里得分列的總和】
mysql> select sum(得分) from qz1;
+-------------+
| sum(得分)   |
+-------------+
|     723.000 |
+-------------+


【回傳qz1表里得分列的欄位個數】
mysql> select count(得分) from qz1;
+---------------+
| count(得分)   |
+---------------+
|             9 |
+---------------+

1.2.2 min( )、max( )與avg( )

mysql> select * from qz1;
+--------+--------------+---------+--------+--------+--------+
| 編號   | 姓名         | 得分    | 地址   | 特長   | addr   |
+--------+--------------+---------+--------+--------+--------+
|      1 | 劉一         |  80.000 | 北京   | 2      | NULL   |
|      2 | 王二         |  90.000 | 深圳   | 2      | 南京   |
|      3 | 李四         |  60.000 | 上海   | 4      | NULL   |
|      4 | 田五         |  99.000 | 南京   | 5      | 南京   |
|      5 | 教授         | 100.000 | 成都   | 3      | 南京   |
|      6 | 小明         |  10.000 | 鎮江   | 3      | NULL   |
|      7 | 劉二         |  60.000 | 北京   | 2      | NULL   |
|      8 | 劉二蛋       | 112.000 | 北京   | 3      | 南京   |
|      9 | 劉小天田     | 112.000 | 北京   | 4      |        |
+--------+--------------+---------+--------+--------+--------+

【回傳qz1表里得分列最小值】
mysql> select min(得分) from qz1;
+-------------+
| min(得分)   |
+-------------+
|      10.000 |
+-------------+

【回傳qz1表里得分列最大值】
mysql> select max(得分) from qz1;
+-------------+
| max(得分)   |
+-------------+
|     112.000 |
+-------------+


【回傳qz1表里得分列平均值】
mysql> select avg(得分) from qz1;
+-------------+
| avg(得分)   |
+-------------+
|  80.3333333 |
+-------------+

1.3 字串函式

  • 常用的字串函式如下表
函式說明
length(x)回傳字串x的長度
trim( )回傳去除指定格式的值
concat(x,y)將提供的引數x和y拼接成一個字串
upper(x)將字串x的所有字母變成大寫字母
lower(x)將字串x的所有字母變成小寫字母
left(x,y)回傳字串x的前y個字符
right(x,y)回傳字串x的后y個字符
repeat(x,y)將字串x重復y次
space(x)回傳x個空格
replace(x,y,z)將字串z替代字串x中的字串y
strcmp(x,y)比較x和y
回傳的值可以為-1,0,1
substring(x,y,z)獲取從字串x中的第y個位置開始長度為z的字串
reverse(x)將字串x反轉

1.3.1 length(x)與trim( )

【回傳字串qwer的長度】
mysql> select length('qwer');
+----------------+
| length('qwer') |
+----------------+
|              4 |
+----------------+

【回傳字串qw e r的長度,空格也算一個字符】
mysql> select length('qw e r');
+------------------+
| length('qw e r') |
+------------------+
|                6 |
+------------------+

【去掉格式只輸出字串qz】
mysql> select trim('   qz');
+---------------+
| trim('   qz') |
+---------------+
| qz            |
+---------------+

【對比用trim函式的顯示】
mysql> select '   qz';
+-------+
| qz    |
+-------+
|    qz |
+-------+

1.3.2 concat(x,y)

【將字串qwe和字串rty拼接起來】
mysql> select concat('qwe','rty');
+---------------------+
| concat('qwe','rty') |
+---------------------+
| qwerty              |
+---------------------+


mysql> select concat('qwe',' rty');
+----------------------+
| concat('qwe',' rty') |
+----------------------+
| qwe rty              |
+----------------------+


【也可結合其他函式一并使用】
mysql> select concat('qwe',trim(' rty'));
+----------------------------+
| concat('qwe',trim(' rty')) |
+----------------------------+
| qwerty                     |
+----------------------------+

1.3.3 upper(x) 與lower(x)

【將字串qwe轉換為大寫字母】
mysql> select upper('qwe');
+--------------+
| upper('qwe') |
+--------------+
| QWE          |
+--------------+


【將字串QwE轉換成小寫字母】
mysql> select lower('QwE');
+--------------+
| lower('QwE') |
+--------------+
| qwe          |
+--------------+

1.3.4 left(x,y)與right(x,y)

【回傳字串前5個字母】
mysql> select left('qwertyy',5);
+-------------------+
| left('qwertyy',5) |
+-------------------+
| qwert             |
+-------------------+


【回傳字串最后5個字母】
mysql> select right('qwertyy',5);
+--------------------+
| right('qwertyy',5) |
+--------------------+
| ertyy              |
+--------------------+


【將字串的前5個字母和最后4個字母拼接起來】
mysql> select concat(left('qwertyy',5),right('qwertyy',4));
+----------------------------------------------+
| concat(left('qwertyy',5),right('qwertyy',4)) |
+----------------------------------------------+
| qwertrtyy                                    |
+----------------------------------------------+

1.3.5 repeat(x,y) 與space(x)

【重復字串3次】
mysql> select repeat('qwe',3);
+-----------------+
| repeat('qwe',3) |
+-----------------+
| qweqweqwe       |
+-----------------+


【回傳5個空格,因為顯示無法看出具體幾個空格,所以這里用length函式顯示字串長度】
mysql> select length(space(5));
+------------------+
| length(space(5)) |
+------------------+
|                5 |
+------------------+

1.3.6 replace(x,y,z)與strcmp(x,y)

【用ea替換字符take sqsy中的sq】
mysql> select replace('take sqsy','sq','ea');
+--------------------------------+
| replace('take sqsy','sq','ea') |
+--------------------------------+
| take easy                      |
+--------------------------------+


【比較1516,若小于回傳-1,等于回傳0,大于回傳1,只會回傳這3個值,比較的是第一位數字】
mysql> select strcmp(15,16);
+---------------+
| strcmp(15,16) |
+---------------+
|            -1 |
+---------------+


mysql> select strcmp(16,16);
+---------------+
| strcmp(16,16) |
+---------------+
|             0 |
+---------------+


mysql> select strcmp(17,16);
+---------------+
| strcmp(17,16) |
+---------------+
|             1 |
+---------------+

mysql> select strcmp(17,7);
+--------------+
| strcmp(17,7) |
+--------------+
|           -1 |
+--------------+

1.3.7 substring(x,y,z) 與reverse(x)

【回傳從字串中第2個字符開始的5個字符】
mysql> select substring('take easy',2,5);
+----------------------------+
| substring('take easy',2,5) |
+----------------------------+
| ake e                      |
+----------------------------+


【將字串進行反轉顯示】
mysql> select reverse('take easy');
+----------------------+
| reverse('take easy') |
+----------------------+
| ysae ekat            |
+----------------------+

【回傳字串的前2個字符,然后進行反轉顯示】
mysql> select reverse(left('take easy',2));
+------------------------------+
| reverse(left('take easy',2)) |
+------------------------------+
| at                           |
+------------------------------+

【先將字串反轉,然后再輸出前2個字符】
mysql> select left(reverse('take easy'),2);
+------------------------------+
| left(reverse('take easy'),2) |
+------------------------------+
| ys                           |
+------------------------------+

1.4 日期時間函式

  • 常用的日期時間函式如下表
函式說明
curdate( )回傳當前時間的年月日
curtime( )回傳當前時間的時分秒
now( )回傳當前時間的日期和時間
year(x)回傳日期x中的年份值
month(x)回傳日期x中的月份值
week(x)回傳日期x是年度第幾個星期
hour(x)回傳x中的小時值
minute(x)回傳x中的分鐘值
second(x)回傳x中的秒鐘值
dayofweek(x)計算日期x是本周的第幾天
在MySQL資料庫中回傳的1是星期日
dayofmonth(x)計算日期x是本月的第幾天
dayofyear(x)計算日期x是本年的第幾天

1.4.1 curdate( )、curtime( )與now( )

【回傳年月日】
mysql> select curdate();
+------------+
| curdate()  |
+------------+
| 2021-04-24 |
+------------+

【回傳當前時間】
mysql> select curtime();
+-----------+
| curtime() |
+-----------+
| 22:18:39  |
+-----------+

【回傳當前完整時間】
mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2021-04-24 22:19:30 |
+---------------------+

1.4.2 year(x)、month(x)和week(x)

【回傳日期2020-8-10中年份值】
mysql> select year('2020-8-10');
+-------------------+
| year('2020-8-10') |
+-------------------+
|              2020 |
+-------------------+

【回傳日期2020-8-10是年度第幾個月】
mysql> select month('2020-8-10');
+--------------------+
| month('2020-8-10') |
+--------------------+
|                  8 |
+--------------------+


【回傳日期2020-8-10是年度第幾個星期】
mysql> select week('2020-8-10');
+-------------------+
| week('2020-8-10') |
+-------------------+
|                32 |
+-------------------+

1.4.3 hour(x)、minute(x)、second(x)

【回傳當前時間的小時】
mysql> select hour(curtime());
+-----------------+
| hour(curtime()) |
+-----------------+
|              22 |
+-----------------+

【回傳當前時間的分鐘】
mysql> select minute(curtime());
+-------------------+
| minute(curtime()) |
+-------------------+
|                26 |
+-------------------+

【回傳當前時間的秒】
mysql> select second(curtime());
+-------------------+
| second(curtime()) |
+-------------------+
|                14 |
+-------------------+

1.4.4 dayofweek(x)、dayofmonth(x)、dayofyear(x)

【計算當前日期是本年的第幾天】
mysql> select dayofyear(curtime());
+----------------------+
| dayofyear(curtime()) |
+----------------------+
|                  114 |
+----------------------+

【計算當前日期是本月的第幾天】
mysql> select dayofmonth(curtime());
+-----------------------+
| dayofmonth(curtime()) |
+-----------------------+
|                    24 |
+-----------------------+

【計算當前日期是本周的第幾天】
mysql> select dayofweek(curtime());
+----------------------+
| dayofweek(curtime()) |
+----------------------+
|                    7 |
+----------------------+

二、MySQL存盤程序

2.1 MySQL存盤程序概述

  • 因為實際的資料庫應用中,有些資料庫操作可能會非常復雜,會需要多條SQL陳述句一起去處理才能夠完成,這個時候就可以使用存盤程序去輕松而高效的完成這個需求(有點類似于shell腳本里的函式)
  • MySQL資料庫存盤程序是一組為了完成特定功能的SQL陳述句集合,存盤程序這個功能時從5.0版本才開始支持,它可以加快資料庫的處理速度,從而增強資料庫在實際應用中的靈活性
  • 存盤程序在使用程序中是將常用或者復雜的作業預先使用SQL陳述句寫好并用一個指定的名稱存盤起來,這個程序經過編譯和優化后存盤在資料庫服務器中,當需要使用該存盤程序時,只需要呼叫它即可
  • 當操作資料庫的傳統SQL陳述句在執行時需要先編譯,然后再去執行,這樣跟存盤程序一對比,明顯存盤程序在執行上速度更快,效率更高
  • 存盤程序在資料庫中創建并保存,它不僅僅是SQL陳述句的集合,還可以加入一些特殊的控制結構,也可以控制資料的訪問方式

2.2 MySQL存盤程序優點

  • 1.執行一次后,會將生成的二進制代碼駐留緩沖區,從而提供執行效率
  • 2.SQL陳述句加控制陳述句的集合,靈活性更高
  • 3.在服務器端存盤,客戶端呼叫時,降低網路負載
  • 4.可多次重復被呼叫,可隨時修改,不影響客戶端呼叫
  • 5.可完成所有的資料庫操作,也可控制資料庫的資訊訪問權限

2.3 MySQL存盤程序創建

  • 使用create procedure陳述句創建存盤程序(與shell函式差不多,都是代碼的復用)
  • 語法:create procedure <程序名> ([程序引數…]]) <程序體>
  • [程序引數…]]:格式
  • <程序名>:盡量避免與內置的函式或欄位重命
  • <程序體>:陳述句
  • [in|out|inout]<引數名><型別>

2.3.1 不帶引數的創建MySQL存盤程序

mysql> delimiter $$                           【定義結束符】                   
mysql> create procedure qq()                  【創建存盤程序(程序名)】
    -> begin                                  【開啟存盤程序】
    -> create table qz3(id int(8),name char(10),score int(15));
    -> insert into qz3 values(1,'lisi',11);   
    -> select * from qz3;                     【程序體】
    -> end $$                                 【結束存盤程序】

mysql> delimiter ;                            【分號前有空格】
mysql> call qq();                             【呼叫存盤程序】
+------+------+-------+
| id   | name | score |
+------+------+-------+
|    1 | lisi |    11 |
+------+------+-------+

2.3.2 MySQL帶引數的存盤程序

  • 1. 存盤程序的主體部分被稱為程序體
  • 2. 以begin開始,以end結束,若只有一條SQL陳述句,則可以省略begin-end
  • 3. 以delimiter開始和結束
  • 帶引數的存盤程序
    • 輸入引數:in 表示呼叫者向程序傳入值(傳入值可以是字面量或變數)
    • 輸出引數:out 表示程序向呼叫者傳出值(可以回傳多個值)(傳出值只能是變數)
    • 輸入/輸出引數:inout 即表示呼叫者向程序傳入值,又表示程序向呼叫者傳出值(只能是變數)
mysql> delimiter @@
mysql> create procedure qz4(in in_name varchar(14))  【行參】
    -> begin
    -> select q_id,q_name,q_level from qz1 where q_name=in_name;
    -> end @@


mysql> delimiter ;
mysql> call qz4('aaa');
+------+--------+---------+
| q_id | q_name | q_level |
+------+--------+---------+
|    1 | aaa    |      15 |
+------+--------+---------+


mysql> call qz4('bbb');                               【實參】
+------+--------+---------+
| q_id | q_name | q_level |
+------+--------+---------+
|    2 | bbb    |      25 |
+------+--------+---------+


mysql> show procedure status\G;                                       【查看存盤程序】
mysql> show create procedure qq\G;                                    【查看qq存盤程序】
mysql> alter procedure qz4 modifies sql data sql security invoker;    【修改存盤程序】
【modifies sql data:表明子程式包含寫資料的陳述句】
【security:安全等級】
【invoker:定義為invoker時表示只要執行者有執行權限,就可以成功執行】


mysql> drop procedure if exists qz4;                                  【洗掉存盤程序】
Query OK, 0 rows affected (0.06 sec)

mysql> show create procedure qz4\G;
ERROR 1305 (42000): PROCEDURE qz4 does not exist
ERROR: 
No query specified

四、總結

1. MySQL資料庫函式

  • MySQL資料庫函式作用:提供了能夠實作各種功能的方法,使我們在查詢記錄時能夠更高效的輸出
  • 常用的包括數學函式、聚合函式、字串函式和日期時間函式
  • 日期時間函式中dayofweek(x)是計算日期x是本周的第幾天,但是在MySQL資料庫中星期日對應的回傳值是1

2. MySQL存盤程序

  • 存盤程序這個功能時從5.0版本才開始支持
  • MySQL存盤程序作業原理:將常用或者復雜的作業預先使用SQL陳述句寫好并用一個指定的名稱存盤起來,這個程序經過編譯和優化后存盤在資料庫服務器中,當需要使用該存盤程序時,只需要呼叫它即可
  • MySQL存盤程序優點
    • 1.執行一次后,會將生成的二進制代碼駐留緩沖區,從而提供執行效率
    • 2.SQL陳述句加控制陳述句的集合,靈活性更高
    • 3.在服務器端存盤,客戶端呼叫時,降低網路負載
    • 4.可多次重復被呼叫,可隨時修改,不影響客戶端呼叫
    • 5.可完成所有的資料庫操作,也可控制資料庫的資訊訪問權限

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

標籤:其他

上一篇:Oracle進階(三)常用函式

下一篇:程式設計實驗

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