데이터 베이스 MySQL 튜토리얼 MySQLStudy案例之--MySQL体系和存储引擎

MySQLStudy案例之--MySQL体系和存储引擎

Jun 07, 2016 pm 02:55 PM
저장 엔진 사례

MySql Study案例之--MySql体系和存储引擎 1、数据库和实例 数据库 :物理操作系统文件或其他形式文件类型的集合。在MySQL中,数据库文件可以是frm、myd、myi、ibd结尾的文件。当使用NDB引擎时,数据库文件可能不是操作系统上的文件,而是存放与内存之中的文

MySql Study案例之--MySql体系和存储引擎


1、数据库和实例

    数据库:物理操作系统文件或其他形式文件类型的集合。在MySQL中,数据库文件可以是frm、myd、myi、ibd结尾的文件。当使用NDB引擎时,数据库文件可能不是操作系统上的文件,而是存放与内存之中的文件,但是定义仍然不变。

     数据库实例:由数据库后台进程/线程以及一个共享内存区组成。共享内存可以被运行的后台进程/线程所共享。需要牢记的是,数据库实例才是真正用来操作数据库文件的。

    在MySQL中,实例和数据库通常关系是一一对应,即一个实例对应一个数据库,一个数据库对应一个实例。但是,在集群情况下可能存在一个数据库可被多个实例访问的情况。

    MySQL被设计为一个单进程多线程架构的数据库。


2、MySQL进程

[root@rh6 ~]#mysqld_safe &

[root@rh6 ~]# ps -ef|grep mysql |grep -v grep
root      4168  4130  0 14:48 pts/1    00:00:00 /bin/sh ./mysqld_safe
mysql     4294  4168  0 14:48 pts/1    00:00:14 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/var/lib/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
root      4643  4130  0 15:26 pts/1    00:00:00 mysql -h localhost -u root -p

MySQL配置文件:
[root@rh6 ~]# mysql --help |grep my.cnf
                      order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf 

数据文件路径:
mysql> show variables like 'datadir' \G
*************************** 1. row ***************************
Variable_name: datadir
        Value: /var/lib/mysql/
1 row in set (0.00 sec)

[root@rh6 bin]# ls -l /var/lib/mysql/
total 28688
-rw-rw---- 1 mysql mysql       56 Jan 28 17:25 auto.cnf
-rw-rw---- 1 mysql mysql 18874368 Feb  2 14:48 ibdata1
-rw-rw---- 1 mysql mysql  5242880 Feb  2 14:48 ib_logfile0
-rw-rw---- 1 mysql mysql  5242880 Jan 28 17:21 ib_logfile1
drwx------ 2 mysql root      4096 Jan 28 17:21 mysql
srwxrwxrwx 1 mysql mysql        0 Feb  2 14:48 mysql.sock
drwx------ 2 mysql mysql     4096 Jan 28 17:21 performance_schema
drwx------ 2 mysql root      4096 Jan 28 17:21 test
로그인 후 복사


3、MySQL的结构
在具体介绍MySQL的存储引擎之前,先来介绍一下MySQL的结构。


650) this.width=650;" alt="" />

从图中可以看到MySQL由以下几个部分组成:

  • 连接池

  • 管理服务和工具组件

  • SQL接口

  • 查询分析器

  • 优化器

  • 缓存

  • 插入式存储引擎

  • 物理文件


4、InnoDB存储引擎:

650) this.width=650;" title="1.png" alt="wKiom1TPPmGCP5nqAAOffBwE-Vc660.jpg" /> InnoDB是Mysql数据库的一种存储引擎:

InnoDB给Mysql的表提供了 事务、回滚、崩溃修复能力、多版本并发控制的事务安全、间隙锁(可以有效的防止幻读的出现)、支持辅助索引、聚簇索引、自适应hash索引、支持热备、行级锁。还有InnoDB是Mysql上唯一一个提供了外键约束的引擎。

InnoDB存储引擎中,创建的表的表结构是单独存储的并且存储在.frm文件中。数据和索引存储在一起的并且存储在表空间中。但是默认情况下mysql会将数据库的所有InnoDB表存储在一个表空间中的。其实这种方式管理起来非常的不方便而且还不支持高级功能所以建议每个表存储为一个表空间实现方式为:使用服务器变量innodb_file_per_table = 1。

如果需要频繁的进行更新、删除操作的数据库也可选择InnoDB存储引擎。因为该存储引擎可以实现事务提交和回滚。

InnoDB存储引擎内存由以下几个部分组成:缓冲池(buffer pool)、重做日志缓冲池(redo log buffer)以及额外的内存池(additional memory pool),分别由配置文件中的参数innodb_buffer_pool_size和innodb_log_buffer_size的大小决定。

650) this.width=650;" title="2.png" alt="wKiom1TPPs6hU3AOAAGnL8_pdKA343.jpg" />

InnoDB体系结构:
后台线程的主要作用是负责刷新内存池中的数据,保证缓冲池中的内存缓存的是最近的数据。此外,将已修改的数据文件刷新到磁盘文件,同时保证在数据库发生异常情况下InnoDB能恢复到正常运行状态。
后台线程
由于Oracle是多进程的架构(Windows下除外),因此可以通过一些很简单的命令来得知Oracle当前运行的后台进程,如ipcs命令。一般来说,Oracle的核心后台进程有CKPT、DBWn、LGWR、ARCn、PMON、SMON等。
很多DBA问我,InnoDB存储引擎是否也是这样的架构,只不过是多线程版本的实现后,我决定去看InnoDB的源代码,发现InnoDB并不是这样对数据库进程进行操作的。InnoDB存储引擎是在一个被称做master thread的线程上几乎实现了所有的功能。
默认情况下,InnoDB存储引擎的后台线程有7个—4个IO thread,1个master thread,1个锁(lock)监控线程,1个错误监控线程。IO thread的数量由配置文件中的innodb_file_ io_threads参数控制,默认为4,如下所示。

mysql> show engine innodb status \G
*************************** 1. row ***************************
  Type: InnoDB
  Name: 
Status: 
=====================================
150202 17:15:33 INNODB MONITOR OUTPUT
=====================================
Per second averages calculated from the last 19 seconds
-----------------
BACKGROUND THREAD
-----------------
srv_master_thread loops: 0 srv_active, 0 srv_shutdown, 8787 srv_idle
srv_master_thread log flush and writes: 8787
----------
SEMAPHORES
----------
OS WAIT ARRAY INFO: reservation count 3
OS WAIT ARRAY INFO: signal count 3
Mutex spin waits 2, rounds 60, OS waits 1
RW-shared spins 2, rounds 60, OS waits 2
RW-excl spins 0, rounds 0, OS waits 0
Spin rounds per wait: 30.00 mutex, 30.00 RW-shared, 0.00 RW-excl
------------
TRANSACTIONS
------------
Trx id counter 2305
Purge done for trx's n:o < 0 undo n:o < 0
History list length 0
LIST OF TRANSACTIONS FOR EACH SESSION:
---TRANSACTION 0, not started
MySQL thread id 3, OS thread handle 0x7fe2a80c2700, query id 45 localhost root init
show engine innodb status
--------
FILE I/O
--------
I/O thread 0 state: waiting for completed aio requests (insert buffer thread)
I/O thread 1 state: waiting for completed aio requests (log thread)
I/O thread 2 state: waiting for completed aio requests (read thread)
I/O thread 3 state: waiting for completed aio requests (read thread)
I/O thread 4 state: waiting for completed aio requests (read thread)
I/O thread 5 state: waiting for completed aio requests (read thread)
I/O thread 6 state: waiting for completed aio requests (write thread)
I/O thread 7 state: waiting for completed aio requests (write thread)
I/O thread 8 state: waiting for completed aio requests (write thread)
I/O thread 9 state: waiting for completed aio requests (write thread)
Pending normal aio reads: 0 [0, 0, 0, 0] , aio writes: 0 [0, 0, 0, 0] ,
 ibuf aio reads: 0, log i/o's: 0, sync i/o's: 0
Pending flushes (fsync) log: 0; buffer pool: 0
161 OS file reads, 5 OS file writes, 5 OS fsyncs
0.00 reads/s, 0 avg bytes/read, 0.00 writes/s, 0.00 fsyncs/s
-------------------------------------
INSERT BUFFER AND ADAPTIVE HASH INDEX
-------------------------------------
Ibuf: size 1, free list len 0, seg size 2, 0 merges
merged operations:
 insert 0, delete mark 0, delete 0
discarded operations:
 insert 0, delete mark 0, delete 0
Hash table size 276707, node heap has 0 buffer(s)
0.00 hash searches/s, 0.00 non-hash searches/s
---
LOG
---
Log sequence number 1602871
Log flushed up to   1602871
Pages flushed up to 1602871
Last checkpoint at  1602871
0 pending log writes, 0 pending chkp writes
8 log i/o's done, 0.00 log i/o's/second
----------------------
BUFFER POOL AND MEMORY
----------------------
Total memory allocated 137363456; in additional pool allocated 0
Dictionary memory allocated 43148
Buffer pool size   8192
Free buffers       8042
Database pages     150
Old database pages 0
Modified db pages  0
Pending reads 0
Pending writes: LRU 0, flush list 0 single page 0
Pages made young 0, not young 0
0.00 youngs/s, 0.00 non-youngs/s
Pages read 150, created 0, written 1
0.00 reads/s, 0.00 creates/s, 0.00 writes/s
No buffer pool page gets since the last printout
Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s
LRU len: 150, unzip_LRU len: 0
I/O sum[0]:cur[0], unzip sum[0]:cur[0]
--------------
ROW OPERATIONS
--------------
0 queries inside InnoDB, 0 queries in queue
0 read views open inside InnoDB
Main thread process no. 4294, id 140611110070016, state: sleeping
Number of rows inserted 0, updated 0, deleted 0, read 0
0.00 inserts/s, 0.00 updates/s, 0.00 deletes/s, 0.00 reads/s
----------------------------
END OF INNODB MONITOR OUTPUT
============================
1 row in set (0.00 sec)
로그인 후 복사


附:

Oracle 体系结构图


wKioL1TPRc2gI0bnAAKfK4JRodk509.jpg


본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

화웨이는 내년에 혁신적인 MED 스토리지 제품을 출시할 예정입니다. 랙 용량은 10PB를 초과하고 전력 소비량은 2kW 미만입니다. 화웨이는 내년에 혁신적인 MED 스토리지 제품을 출시할 예정입니다. 랙 용량은 10PB를 초과하고 전력 소비량은 2kW 미만입니다. Mar 07, 2024 pm 10:43 PM

이 웹사이트는 3월 7일 화웨이의 데이터 스토리지 제품 라인 사장인 Zhou Yuefeng 박사가 최근 MWC2024 컨퍼런스에 참석하여 웜 데이터(WarmData)와 콜드 데이터(ColdData)용으로 설계된 차세대 OceanStorArctic 자전 스토리지 솔루션을 구체적으로 시연했다고 보도했습니다. Huawei의 데이터 스토리지 제품 라인 사장 Zhou Yuefeng은 일련의 혁신적인 솔루션을 출시했습니다. 이미지 출처: 이 사이트에 첨부된 Huawei의 공식 보도 자료는 다음과 같습니다. 이 솔루션의 가격은 자기 테이프보다 20% 저렴하며, 전력 소비는 하드 디스크보다 90% 낮습니다. 해외 기술 매체인 blockandfiles에 따르면, Huawei 대변인은 자기전기 저장 솔루션에 대한 정보도 공개했습니다. Huawei의 자기전자 디스크(MED)는 자기 저장 매체의 주요 혁신입니다. 1세대 ME

Vue3+TS+Vite 개발 기술: 데이터 암호화 및 저장 방법 Vue3+TS+Vite 개발 기술: 데이터 암호화 및 저장 방법 Sep 10, 2023 pm 04:51 PM

Vue3+TS+Vite 개발 팁: 데이터를 암호화하고 저장하는 방법 인터넷 기술의 급속한 발전으로 인해 데이터 보안 및 개인 정보 보호가 점점 더 중요해지고 있습니다. Vue3+TS+Vite 개발 환경에서 데이터를 암호화하고 저장하는 방법은 모든 개발자가 직면해야 하는 문제입니다. 이 기사에서는 개발자가 애플리케이션 보안 및 사용자 경험을 개선하는 데 도움이 되는 몇 가지 일반적인 데이터 암호화 및 저장 기술을 소개합니다. 1. 데이터 암호화 프런트엔드 데이터 암호화 프런트엔드 암호화는 데이터 보안을 보호하는 중요한 부분입니다. 일반적으로 사용되는

Windows 11에서 캐시를 지우는 방법: 사진이 포함된 자세한 튜토리얼 Windows 11에서 캐시를 지우는 방법: 사진이 포함된 자세한 튜토리얼 Apr 24, 2023 pm 09:37 PM

캐시란 무엇입니까? 캐시(ka·shay로 발음)는 자주 요청되는 데이터 및 지침을 저장하는 데 사용되는 특수 고속 하드웨어 또는 소프트웨어 구성 요소로, 웹 사이트, 애플리케이션, 서비스 및 기타 시스템 측면을 더 빠르게 로드하는 데 사용할 수 있습니다. . 캐싱을 사용하면 가장 자주 액세스하는 데이터를 쉽게 사용할 수 있습니다. 캐시 파일은 캐시 메모리와 동일하지 않습니다. 캐시 파일은 여러 프로그램에서 필요할 수 있는 PNG, 아이콘, 로고, 셰이더 등과 같이 자주 필요한 파일을 의미합니다. 이러한 파일은 일반적으로 숨겨져 있는 실제 드라이브 공간에 저장됩니다. 반면에 캐시 메모리는 주 메모리 및/또는 RAM보다 빠른 메모리 유형입니다. CPU에 더 가깝고 RAM에 비해 빠르기 때문에 데이터 액세스 시간을 크게 줄입니다.

우분투에서의 Git 설치 과정 우분투에서의 Git 설치 과정 Mar 20, 2024 pm 04:51 PM

Git은 빠르고 안정적이며 적응력이 뛰어난 분산 버전 제어 시스템입니다. 분산된 비선형 워크플로를 지원하도록 설계되어 모든 규모의 소프트웨어 개발 팀에 이상적입니다. 각 Git 작업 디렉터리는 모든 변경 사항에 대한 전체 기록을 보유하고 네트워크 액세스나 중앙 서버 없이도 버전을 추적할 수 있는 독립적인 저장소입니다. GitHub는 분산 개정 제어의 모든 기능을 제공하는 클라우드에 호스팅되는 Git 저장소입니다. GitHub는 클라우드에서 호스팅되는 Git 저장소입니다. CLI 도구인 Git과 달리 GitHub에는 웹 기반 그래픽 사용자 인터페이스가 있습니다. 이는 다른 개발자와 협력하고 스크립트 변경 사항을 추적하는 버전 제어에 사용됩니다.

민감한 데이터를 보호하기 위해 sessionStorage를 올바르게 사용하는 방법 민감한 데이터를 보호하기 위해 sessionStorage를 올바르게 사용하는 방법 Jan 13, 2024 am 11:54 AM

sessionStorage를 올바르게 사용하여 민감한 정보를 저장하려면 특정 코드 예제가 필요합니다. 웹 개발이든 모바일 애플리케이션 개발이든 사용자 로그인 자격 증명, ID 번호 등과 같은 민감한 정보를 저장하고 처리해야 하는 경우가 많습니다. 프런트엔드 개발에서는 sessionStorage를 사용하는 것이 일반적인 스토리지 솔루션입니다. 그러나 sessionStorage는 브라우저 기반 스토리지이기 때문에 저장된 민감한 정보가 악의적으로 접근 및 사용되지 않도록 몇 가지 보안 문제에 주의가 필요합니다.

엔진 환경 변화: 3기통 엔진이 6기통과 8기통의 지배력에 도전합니다. 엔진 환경 변화: 3기통 엔진이 6기통과 8기통의 지배력에 도전합니다. Oct 08, 2023 pm 10:57 PM

8일 뉴스에 따르면 미국 자동차 시장은 그동안 사랑받았던 6기통과 8기통 동력엔진이 점차 그 위세를 잃어가는 가운데 3기통 엔진이 등장하고 있다. 10월 8일자 뉴스에서는 미국 자동차 시장이 내부적으로 변화를 겪고 있다는 소식을 전했습니다. 과거에 사랑받았던 6기통과 8기통 동력엔진은 점차 그 지배력을 잃어가고 있으며, 대부분의 사람들의 마음 속에는 미국인들이 대용량 배기량 모델과 '미국의 대형 V8'을 좋아하기 시작하고 있습니다. 항상 미국 자동차와 동의어였습니다. 그러나 최근 외신이 공개한 자료에 따르면 미국 자동차 시장의 지형은 엄청난 변화를 겪고 있으며 내부 경쟁도 치열해지고 있다. 2019년 이전에는 미국이

NVIDIA AI 게임 엔진 실제 테스트 : NPC와 실시간 채팅, 중국어가 유창함 NVIDIA AI 게임 엔진 실제 테스트 : NPC와 실시간 채팅, 중국어가 유창함 Mar 04, 2024 am 09:40 AM

'사이버펑크 2077'에서 황학자가 만든 지능형 NPC는 이미 중국어를 할 수 있다고요? 중국어와 영어로 유창하게 대화하는 NPC들의 자연스러운 표정과 움직임, 그리고 입 모양의 조화까지.. 눈앞에 스크린이 없었다면 정말 그곳에 있는 것 같은 느낌이 들었습니다. 올해 CES 전시회에서 엔비디아는 자사의 지능형 엔진인 아바타 클라우드 엔진(ACE)을 사용해 게임 NPC를 '살아있다'로 만들어 적잖은 충격을 안겼다. △CES에 전시된 지능형 NPC는 ACE를 사용한다. 게임 속 캐릭터는 미리 대본을 준비하지 않고도 생생한 표정과 신체 움직임을 보여주며 플레이어와 실감나는 음성 대화를 할 수 있다. 데뷔 당시 유비소프트, 텐센트, 넷이즈, 미호요 등이 있었다.

초현실적인 렌더링! 언리얼 엔진 기술 전문가가 전역 조명 시스템 Lumen에 대해 설명합니다. 초현실적인 렌더링! 언리얼 엔진 기술 전문가가 전역 조명 시스템 Lumen에 대해 설명합니다. Apr 08, 2023 pm 10:21 PM

실시간 전역 조명(Real-time GI)은 항상 컴퓨터 그래픽의 성배였습니다. 수년에 걸쳐 업계에서는 이 문제를 해결하기 위해 다양한 방법을 제안해 왔습니다. 일반적인 방법에는 정적 기하학, 대략적인 장면 표현 또는 대략적인 프로브 추적과 같은 특정 가정을 활용하고 둘 사이에 조명을 보간하여 문제 영역을 제한하는 것이 포함됩니다. 언리얼 엔진에서 전역 조명 및 반사 시스템인 Lumen 기술은 Krzysztof Narkowicz와 Daniel Wright가 공동 창립했습니다. 목표는 이전 제품과 달리 균일한 조명과 구워진 듯한 조명 품질이 가능한 솔루션을 구축하는 것이었습니다. 최근 SIGGRAPH 2022에서 Krzysztof Narko는

See all articles