首頁  >  文章  >  資料庫  >  關於資料庫中架構的相關介紹

關於資料庫中架構的相關介紹

零下一度
零下一度原創
2017-05-05 16:32:161549瀏覽

1、MySQL 簡介

概述
  • MySQL是一個關聯式資料庫管理系統,由瑞典MySQL AB公司開發,目前屬於Oracle公司。

  • MySQL是一種關聯資料庫管理系統,將資料保存在不同的表中,而不是將所有資料放在一個大倉庫內,這樣就增加了速度並提高了靈活性。

  • Mysql是開源的,所以你不需要支付額外的費用。

  • Mysql支援大型的資料庫。可以處理擁有上千萬筆記錄的大型資料庫。

  • MySQL使用標準的SQL資料語言形式。

  • Mysql可以允許在多個系統上,並且支援多種語言。這些程式語言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。

  • Mysql對PHP有很好的支持,PHP是目前最受歡迎的Web開發語言。

  • MySQL支援大型資料庫,支援5000萬筆記錄的資料倉儲,32位元系統表檔案最大可支援4GB,64位元系統支援最大的表檔為8TB。

  • Mysql是可以自訂的,採用了GPL協議,你可以修改原始碼來開發自己的Mysql系統。

進階MySQL涉及到知識
  • mysql核心

  • sql優化攻城獅

  • mysql伺服器的最佳化

  • 各種參數常數設定

  • 查詢語句最佳化

  • 主從複製

  • #軟體硬體升級

  • 災難備份

  • #sql程式設計

  • 完整的mysql最佳化需要很深的功底,大公司甚至有專門的DBA寫上述

2、MySQL Linux版的安裝

  • 此安裝的是MySQL 5.5, 安裝環境CentOS 6.5

  • 版本下載位址官網下載位址

    • 下載MySQL-ClientMySQL-Server

    • downloads.skysql.com/archives/mysql-5.5/MySQL-server-5.5.16-1.rhel4.i386.rpm

    • downloads.skysql.com/archives/mysql- 5.5/MySQL-client-5.5.16-1.rhel4.i386.rpm

    • ##downloads.skysql.com/archives/mysql-5.5/MySQL-devel-5.5.16-1 .rhel4.i386.rpm

  • 檢查目前系統是否安裝過MySQL

    • 查詢指令:  

      rpm -qa|grep -i mysql

    • 刪除指令:  

      rpm -e --nodeps RPM套件全名

  • 安裝mysql服務端(

    注意提示)

    • 關於資料庫中架構的相關介紹

      設定密碼提示

  • 安裝mysql客戶端

  • #查看MySQL安裝時建立的mysql用戶和mysql群組

    • # cat /etc/passwd | grep mysql

    • ## cat /etc/group | grep mysql

  • mysql服務的啟動+停

    • #查看字元集

    • #修改字元集,修改先前copy 的設定檔。 (詳細後續程式碼)

    • MySQL的安裝位置

    • show variables like 'character%';
    • 關於資料庫中架構的相關介紹

    • ##show variables like '%char%';
    • 字元集
    • 預設的是客戶端和伺服器都用了latin1,所以會亂碼。

    • 在linux下查看安裝目錄ps -ef|grep mysql

    • ##拷貝目前

      5.5版本cp /usr/share/mysql/my-huge.cnf /etc/my.cnf

    • 5.6版本

       
    • cp /usr/share/mysql/my-default.cnf /etc/my.cnf
    • #chkconfig mysql on   設定自動啟動

    • # chkconfig --list | grep mysql   檢查是否設定了自動啟動

    • # /etc/init .d/mysql start

    • # /etc/init.d/mysql stop

    • #service mysql start
    • ##########service mysql stop########################################################## #####查看MySQL啟動停止狀態:  #### ps -ef | grep mysql###############啟動停止操作:############################################################################ ##設定MySQL 自開服務############修改設定檔位置#############修改字元集與資料儲存路徑###
路徑 解釋 #備註
/var/lib/mysql/ mysql資料庫檔案的存放路徑 /var/lib/mysql/atguigu.cloud.pid
#/usr/share/mysql 設定檔目錄 mysql.server指令及設定檔
/usr/bin 相關指令目錄 mysqladmin mysqldump等指令
#/etc/init.d/mysql 啟動停相關腳本

關於資料庫中架構的相關介紹

MySQL安裝位置

[client]
#password = your_password
port = 3306
socket = /var/lib/mysql/mysql.sock

# 这一行需要设置字符集
default-character-set=utf8

# The MySQL server
[mysqld]
port = 3306

# 还有这三行
character_set_server=utf8
character_set_client=utf8
collation-server=utf8_general_ci

socket = /var/lib/mysql/mysql.sock
skip-external-locking
key_buffer_size = 384M
max_allowed_packet = 1M
table_open_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 32M
# Try number of CPU's*2 for thread_concurrency
thread_concurrency = 8

[mysql]
no-auto-rehash
# 还有这一行
default-character-set=utf8

3、Mysql設定檔

主要設定檔
  • 二進位日誌log-bin

    • 主從複製

    • 關於資料庫中架構的相關介紹


  • 錯誤日誌log-error

    • #預設是關閉的,記錄嚴重的警告和錯誤訊息,每次啟動和關閉的詳細資訊等。

  • 查詢日誌log

    • #預設關閉,記錄查詢的sql語句,如果開啟會減少mysql的整體效能,因為記錄日誌也是需要消耗系統資源的

  • 資料檔

    • windows

    • Linux:

    • D:\devSoft\MySQLServer5.5\data目錄下可以挑選很多函式庫

    • 預設路徑#cd /var/lib/mysql/

    • 看看目前系統中的全部函式庫後再進去#ls -1F | grep ^d

    • 兩個系統

    • frm檔案: 存放表結構

    • myd檔: 存放表資料

    • myi檔: 存放表索引

  • 如何設定

    • Windows: my.ini檔案

    • #Linux:  /etc/my.cnf檔案

#4、Mysql邏輯架構介紹

總體概覽
  • 和其它資料庫相比,MySQL有點與眾不同,它的架構可以在多種不同場景中應用並發揮良好作用。主要體現在儲存引擎的架構上,插件式的儲存引擎架構將查詢處理和其它的系統任務以及資料的儲存提取相分離。這種架構可以根據業務的需求和實際需求選擇合適的儲存引擎。

    • 資料儲存層,主要是將資料儲存在運行於裸設備的檔案系統之上,並完成與儲存引擎的交互。

    • 儲存引擎層,儲存引擎真正的負責了MySQL中資料的儲存和擷取,伺服器透過API與儲存引擎通訊。不同的儲存引擎具有的功能不同,這樣我們可以根據自己的實際需求進行選取。後面介紹MyISAM和InnoDB

    • 第二層架構主要完成大多少的核心服務功能,如SQL接口,並完成緩存的查詢,SQL的分析和優化及部分內置函數的執行。所有跨儲存引擎的功能也在這一層實現,如流程、函數等。在該層,伺服器會解析查詢並建立對應的內部解析樹,並對其完成對應的最佳化如確定查詢表的順序,是否利用索引等,最後產生對應的執行操作。如果是select語句,伺服器也會查詢內部的快取。如果快取空間夠大,這樣在解決大量讀取操作的環境中能夠很好的提升系統的效能。

    • 最上層是一些客戶端和連接服務,包含本機sock通訊和大多數基於客戶端/服務端工具實現的類似tcp/ip的通訊。主要完成一些類似連線處理、授權認證、及相關的安全方案。在該層上引入了執行緒池的概念,為透過認證安全接入的用戶端提供執行緒。同樣在該層上可以實現基於SSL的安全連結。伺服器也會為安全存取的每個用戶端驗證它所具有的操作權限。

    • 關於資料庫中架構的相關介紹


    • 1、連接層

    • 2、服務層

    • #3、引擎層

    • 4、儲存層

查詢說明
  • 首先,mysql的查詢流程大致是:

    • mysql客戶端透過協定與mysql伺服器建連接,發送查詢語句,先檢查查詢緩存,如果命中,直接傳回結果,否則進行語句解析

    • 有一系列預處理,例如檢查語句是否寫正確了,然後是查詢最佳化(例如是否使用索引掃描,如果是一個不可能的條件,則提前終止),產生查詢計劃,然後查詢引擎啟動,開始執行查詢,從底層儲存引擎呼叫API取得數據,最後傳回給客戶端。怎麼存數據、怎麼取數據,都與儲存引擎有關。

    • 然后,mysql默认使用的BTREE索引,并且一个大方向是,无论怎么折腾sql,至少在目前来说,mysql最多只用到表中的一个索引。

5、Mysql存储引擎

  • 查看命令

    • show variables like '%storage_engine%';

    • mysql> show engines;

    • 查看当前的MySQL 提供什么存储引擎

    • 看你的 MySQL 当前默认的存储引擎:

    • 關於資料庫中架構的相關介紹

      默认的存储引擎

  • MyISAMInnoDB

    • 關於資料庫中架構的相關介紹

      两种引擎对比

  • 阿里巴巴、淘宝用哪个

    • 關於資料庫中架構的相關介紹


    • Percona 为 MySQL 数据库服务器进行了改进,在功能和性能上较 MySQL 有着很显著的提升。该版本提升了在高负载情况下的 InnoDB 的性能、为 DBA 提供一些非常有用的性能诊断工具;另外有更多的参数和命令来控制服务器行为。

    • 该公司新建了一款存储引擎叫xtradb完全可以替代innodb,并且在性能和并发上做得更好,

    • 阿里巴巴大部分mysql数据库其实使用的percona的原型加以修改。

    【相关推荐】

    1. 免费mysql在线视频教程

    2. MySQL最新手册教程

    3. 布尔教育燕十八mysql入门视频教程

以上是關於資料庫中架構的相關介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn