客戶端與伺服器模型

来源:https://www.cnblogs.com/1naonao/archive/2019/11/01/11779643.html
-Advertisement-
Play Games

一.客戶端與伺服器模型 1.mysql是一個典型的C/S服務結構 1.1 mysql自帶的客戶端程式(/application/mysql/bin) ​ mysql ​ mysqladmin ​ mysqldump 1.2 mysqld一個二進位程式,後臺的守護進程 單進程 多線程 2.應用程連接M ...


一.客戶端與伺服器模型

  • 1.mysql是一個典型的C/S服務結構
    • 1.1 mysql自帶的客戶端程式(/application/mysql/bin)
      • mysql
      • mysqladmin
      • mysqldump
  • 1.2 mysqld一個二進位程式,後臺的守護進程
    • 單進程
    • 多線程
  • 2.應用程連接MySQL方式

    • TCP/IP的連接方式

  • 套接字連接方式

總結:

  • 不一定-h都是TCP連接,-hlocalhost(socket)
  • 不一定-S都是socket連接,如果前面加了-h一定是tcp
  • MYSQL預設使用的事socket(安全,速度快)

二.MySQL伺服器構成

什麼是實例

  • 1.MySQL的後臺進程+線程+預分配的記憶體結構。
  • 2.MySQL在啟動的過程中會啟動後臺守護進程,並生成工作線程,預分配記憶體結構供MySQL處理數據使用。

圖1.1-word的打開方式

圖1.2-mysqld的打開方式

MySQLD伺服器程式構成

mysqld是一個守護進程但是本身不能自主啟動:

[root@db01 ~]# mysql -uroot -poldboy123
[root@db01 ~]# select user,host,password from mysql.user;

連接層

  • 1、提供連接協議(socket、tcp/ip)
  • 2、驗證用戶的合法性(用戶名、密碼、白名單)
  • 3、提供一個專用連接線程(接收SQL、返回結果),將SQL語句交給SQL層繼續處理
  • 許可權確定

SQL層

  • 1、接收到SQL語句,語法判斷。
  • 2、判斷語義(判斷語句類型:DML、DDL、DCL、DQL)
  • 3、解析SQL語句,生成多種執行計劃
  • 4、優化器,選擇他認為成本最低的執行計劃。
  • 5、執行器根據優化器的選擇,按照優化器建議執行SQL語句,得到去哪兒找SQL語句需要訪問的數據
    • 5.1 具體:在哪個數據文件上的哪個數據頁中?
    • 5.2 將以上結果充送給下層繼續處理
  • 6、接收存儲引擎層的數據,結構化成表的形式,通過連接層提供的專用線程,將表數據返回給用戶。
    • 7、提供查詢緩存
    • 7.1 query_cache, 使用memcache 或者redis 替代
  • 8、日誌記錄(binlog)

存儲引擎層

  • 1、接收上層的執行結果
  • 2、取出磁碟文件和相應數據,結構化成表格,返回給SQL層
  • 3、提供一個與SQL層交互的線程

三.MySQL的結構

MySQL的邏輯結構(熟悉)

MySQL的邏輯對象:做為管理人員或者開發人員操作的對象

  • 1、庫
  • 2、表:元數據+真實數據行
  • 3、元數據:用來描述真實數據的數據,列+其它屬性(行數+占用空間大小+許可權)
  • 4、列:列名字+數據類型+其他約束(非空、唯一、主鍵、非負數、自增長、預設值)

最直觀的數據:二維表,必須用庫來存放
img

MySQL邏輯結構與Linux系統對比

MySQL Linux
目錄
show databases; ls-l /
use mysql cd /mysql
文件
show tables; ls
二維表=元數據+真實數據行 文件=文件名+文件屬性
create user zls@'%';select user,host from mysql.user; useradd

MySQL的物理結構(瞭解)

1)MySQL的最底層的物理結構是數據文件,也就是說,存儲引擎層,打交道的文件,是數據文件。

2)存儲引擎分為很多種類(Linux中的FS)

3)不同存儲引擎的區別:存儲方式、安全性、性能

myisam:
img

innodb:
img

段、區、頁(塊)

  • 1、段:理論上一個表就是一個段,由多個區構成,(分區表是一個分區一個段)
  • 2、區:連續的多個頁構成 一個區等於64個頁
  • 3、頁:最小的數據存儲單元,預設是16k

==分區表==:分區表就是一個區構成一個段也就是一個表,就是分區表,64個頁


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 由於我在做linux下的QT開發,有時候會用到shell腳本的輔助,但是需要QT運行shell腳本並獲取執行結果,今天給大家分享下我的技巧,廢話少說直接上代碼: ...
  • Linux用戶和組的屬性與許可權本章結構1.用戶賬號和組賬號概述2.用戶賬號和組賬號管理3.查詢賬號信息4.查看目錄或文件的屬性5.設置目錄或文件的許可權6.設置目錄或文件的歸屬 前言在linux中一切都是文件(文件夾和硬體設備是特殊的文件),如果有可能儘量使用文本文件。文本文件是人和機器能理解的文件, ...
  • 作為IntelliJ IDEA mac新手,IDEA如何快速搭建Java開發環境呢? 今天小編就給大家帶來了IntelliJ IDEA mac使用教程,想知道IDEA如何快速搭建Java開發環境?那就一起來看看吧! 全局JDK(預設配置) 具體步驟:頂部工具欄 File ->Other Settin ...
  • Ubuntu軟體管理:dpkg和apt Debian軟體包通常為預編譯的二進位格式的擴展名“.deb”,類似rpm文件, dpkg:package manager for Debian,類似於rpm, dpkg是基於Debian的系統的包管理器。可以安裝,刪除和構建軟體包,但無法自動下載和安裝軟體包 ...
  • rpm包管理 程式源代碼 >預處理 >編譯 >彙編 >鏈接 數據處理 轉為彙編代碼 進行彙編 引入庫文件 靜態編譯:.a 動態編譯:.so包的組成: 二進位文件、庫文件、配置文件、幫助文件程式包管理器: debian: deb文件, dpkg包管理器 redhat: rpm文件, rpm包管理器 r ...
  • 升級過程: 原系統:CentOS7.3 [root@my-e450 ~]# uname -r3.10.0-514.el7.x86_64 安裝必需的軟體包: # yum update# yum install -y ncurses-devel make gcc bc bison flex elfuti ...
  • MySQL的主從複製是實現應用的高性能,高可用的基礎。對於資料庫讀操作較密集的應用,通過使資料庫請求負載均衡分配到不同MySQL伺服器,可有效減輕資料庫壓力。當遇到MySQL單點故障中,也能在短時間內實現故障切換。 ...
  • 解法練習 案例1.子查詢練習 欄位 說明film_id 電影idtitle 電影名稱description 電影描述信息category_id 電影分類idname 電影分類名稱last_update 電影分類最後更新時間film_id 電影idcategory_id 電影分類idlast_upda ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...