>데이터 베이스 >MySQL 튜토리얼 >MySQL 연구 노트(1)

MySQL 연구 노트(1)

黄舟
黄舟원래의
2016-12-21 16:38:301098검색

기술의 왕국은 정말 매력적이에요. IT 업계에 일을 시작하자마자 다양한 기술에 매료되고 혼란스러워졌어요. 저는 아직도 약속을 지키는 편인데, 다행히 인내심이 조금 있어서 온갖 것들을 조금씩 얻었습니다. 그런데 이런 상황은 정말 내 IQ와 맞지 않는다. 너무 많은 것을 배울 에너지가 없습니다. 일부 기술을 일시적으로 포기하는 방법을 천천히 배우고, 먼저 업무에 사용해야 하는 것들을 깊이 연구하십시오. mysql 등이 대표적이다. Linux처럼 제가 특히 좋아하는 것에는 너무 고급스럽고 복잡합니다. 포기하고 싶지 않아서 매일 한 시간씩 Linux에 명령에 익숙해지고 점차 발전해 나갈 것입니다. 내가 생존을 위해 의지하는 다양한 기술이 좀 더 완벽해지면 Linux를 공부하는 데 많은 시간을 투자할 수 있을 것 같아요.

"MySQL 핵심 기술 및 모범 사례"라는 책을 읽다가 이 내용을 읽었습니다. 공부하다 보면 도움이 되는 내용은 뭐든 적어두기 때문에 노트가 좀 지저분해 보일 것 같아요. 나는 이전에 이미 몇 가지 지식 포인트를 마스터했기 때문에 이에 대해 쓰지 않을 것입니다. 이것은 단지 독학 노트이므로 공부 시간을 낭비하고 싶지 않습니다.

InnoDB 엔진과 MyISAM 엔진

MySQL은 관계형 데이터베이스입니다. 스토리지 엔진은 쇼 엔진을 사용하여 볼 수 있습니다. 내 버전은 5.6.26입니다. 버전을 보려면 select version()을 사용하세요. MySQL 5.6.26에는 9개의 스토리지 엔진이 있습니다. 가장 흔하고 진부한 것은 MyISAM과 InnoDB입니다. 비즈니스가 비트랜잭션인 경우 두 스토리지 엔진은 유사하며 성능에는 차이가 없습니다. 비즈니스에서 대부분의 선택 쿼리가 필요한 경우 MyISAM 스토리지 엔진을 사용할 수 있습니다. 필요한 것이 있으면 InnoDB 스토리지를 사용해야 합니다.

MySQL 백업

백업 중 데이터 불일치를 방지하기 위해 데이터베이스 백업 중에는 데이터베이스에 대한 쓰기 작업이 허용되지 않습니다.

읽기 잠금이 있는 플러시 테이블을 사용할 수 있습니다.

이제 메모리의 테이블 데이터를 스캔하여 테이블에 복원합니다. 그런 다음 테이블을 잠급니다. 동료가 읽기 권한을 부여합니다. 즉, 데이터베이스를 백업해도 여전히 읽기 권한이 있습니다.

데이터베이스 백업 작업이 완료될 때까지 기다린 후 데이터베이스를 잠금 해제하세요. tables Unlock;

MySQL 데이터형

책에 나온 이 데이터형 구조 그림은 꽤 괜찮은데, 인터넷에서 검색해보니 별로 안 좋아보이더군요. 그러니 제가 직접 그리는 것이 좋을 것 같습니다. 그리 오래 걸리지는 않을 것입니다.

MySQL 연구 노트(1)

Ma Dan, 내 그리기 도구가 고장났어요. 지식을 요약하겠습니다. 왜 귀찮게 합니까?

다음 단계는 텍스트입니다. 텍스트가 빠르게 전달되므로 노력이 절약됩니다.

소수점 형식은 정밀소수점 형식과 부동소수점 형식으로 구분됩니다.

십진수 유형에는 소수 정확한 유형이 포함됩니다.

단정밀도와 배정밀도를 포함한 부동 소수점 십진수입니다. (무슨 뜻인지 모르겠습니다. 관심이 있으시면 바이두에서 확인해 보세요. 가장 일반적으로 사용되는 것은 십진수입니다.) '

십진수(길이, 정밀도). 길이는 숫자의 전체 길이를 나타내고 정밀도는 소수점 이하의 길이를 나타냅니다.

MySQL의 문자열 유형

MySQL은 주로 char, varchar,tinyintm, text,mediumtext,longtext의 6가지 문자열 유형을 지원합니다.

문자열 유형에서는 인식하지 못했습니다. 분명히 전에. 많은 실수를 저질렀습니다. 책을 읽고 실험을 해보니 많은 것을 이해하게 되었습니다.

다음 내용은 "MySQL 핵심 기술 및 모범 사례"의 3장을 직접 인용합니다.

char(n)은 고정 길이 문자열 유형입니다. 즉, 저장 공간에서 n자(바이트 아님)를 차지합니다. n의 최대값은 255입니다. 예를 들어 중국어 간체 문자의 경우 gbk 인코딩을 설정하면 char(255)는 255개의 한자를 저장할 수 있으며 각 한자는 2바이트의 저장 공간을 차지한다는 의미입니다. utf8 문자 집합의 문자열에 대해 char(255)는 255개의 한자를 저장할 수 있으며 각 한자는 3바이트의 저장 공간을 차지함을 의미합니다.

varchar(n)은 가변 길이 문자열 유형입니다. 즉, 해당 문자열이 차지하는 저장 공간은 n에 관계없이 문자열 자체가 차지하는 저장 공간임을 의미합니다. 이는 char(n)과 다르며 char(n)과도 다릅니다. 예를 들어, 중국어 간체 문자 집합 gbk의 문자열에 대해 varchar(255)는 255개의 한자를 저장할 수 있음을 의미합니다. 각 한자는 2바이트의 저장 공간을 차지합니다. 예를 들어 이 문자열에 너무 많은 중국어 문자가 포함되어 있지 않으면 "中"이라는 단어만 포함되며 다른 오버헤드를 고려하지 않는 경우 varchar(255)는 저장 공간에서 한 문자(2바이트)만 차지합니다. 그리고 char(255)는 한자를 하나만 저장하더라도 255자의 저장공간을 차지해야 한다.

다양한 문자 유형이 차지하는 저장 공간 :

MySQL 연구 노트(1)


MySQL 날짜 유형

MySQL을 주로 지원 5가지 날짜 유형. 날짜, 시간, 연도, 날짜/시간, 타임스탬프.

날짜 유형. 형식은 연도, 월, 일을 지원합니다. YYYY—MM—DD;

시간 유형입니다. 시, 분, 초. HH: II: SS.

Datetime은 날짜와 시간의 조합입니다. 그것은 연, 월, 일입니다. 시간, 분, 초가 지났습니다.

타임스탬프는 날짜/시간과 유사합니다.

하지만 공부에 너무 집착하면 안 돼요. 타임스탬프와 날짜/시간의 차이점을 살펴보겠습니다.

은 다양한 값 범위를 나타내며, datetime의 값 범위는 timestamp의 값 범위보다 훨씬 큽니다. 타임스탬프는 2037년에 종료됩니다.

타임스탬프에 값이 할당되지 않은 경우 이 필드의 값은 실제로 mysql 서버의 현재 날짜 및 시간입니다.

타임스탬프 유형이 동일한 날짜 또는 시간의 경우. 손실에 따라 결과가 달라집니다. "time_zone"과 같은 MySQL 명령 show 변수를 사용하면 다음 정보가 표시됩니다.

MySQL 연구 노트(1)

이 SYSTEM은 시스템 시간을 사용한다는 의미입니다.

타임스탬프 데이터가 포함된 레코드가 수정되면 타임스탬프 데이터가 mysql 서버의 현재 날짜 및 시간으로 자동 업데이트됩니다.

MySQL 바이너리 유형

적어도 아직까지는 MySQL 데이터베이스의 바이너리 데이터 유형에 관여해서는 안 됩니다. mysql이 바이너리 데이터를 저장할 수 있다는 것을 아는 것만으로도 충분하다고 생각합니다. 나중에 필요하다면 다시 공부하러 오세요.

몇 가지 생각:

(1) 애플리케이션 요구 사항(값 범위 정밀도)을 충족할 때 짧은 데이터 유형을 사용해 보십시오.

(2) 데이터 유형은 단순할수록 좋습니다.

(3) 정확한 십진수 유형을 사용하도록 노력하세요.

(4) 날짜와 시간을 저장하기 위해 문자열을 사용하는 대신 내장된 날짜 및 시간 데이터 유형을 사용해 보세요.

(5) null 필드를 피하고 필드를 null이 아닌 제약 조건으로 지정하는 것이 좋습니다. MySQL에서는 null 값이 포함된 열에 대한 쿼리를 최적화하기 어렵기 때문입니다. Null 값은 인덱스 통계 및 비교 최적화 작업을 더욱 복잡하게 만듭니다. null 대신 0, 특수값 또는 빈 문자열을 사용하는 것이 좋습니다.

내 블로그의 모든 글은 원본입니다. 일부 기사에서는 관련 정보를 인용할 수 있지만 출처를 명확히 명시했습니다. 자유롭게 재인쇄하고 공유할 수 있지만 이 기사에 대한 링크와 저작권 표시를 추가해야 합니다.

위 내용은 Mysql 학습노트(1) 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


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