자바 가장 일반적인 면접 질문 : 모듈 열일곱

세븐틴, MySQL을

 

무엇 세 가지 패러다임 (164) 데이터베이스는 무엇입니까?

  • 제 패러다임 : 원자 열 것으로 각 열이 데이터베이스 테이블의 불가분 원자, 즉 데이터 항목 강조이다.

  • 두 번째 패러다임 : 기업은 기본 키에 대한 요구 사항은 전적으로 의존 때문이다. 은 키 속성의 주요 부분의 존재에 의존하지 말합 완전히 의존 소위.

  • 셋째 패턴 : 모든 비 기본 속성이 아닌 다른 기본 속성에 의존하지 않는다.

165 증가 테이블 일곱 개 데이터의 총 내부, 마지막 두 개의 데이터를 삭제 MySQL 데이터베이스를 다시 시작하고 데이터의 조각을 삽입, 이번에 ID는 몇인가?

  • 테이블 타입의 MyISAM 인 경우, 해당 ID는 18입니다.

  • 테이블 유형이 InnoDB의 경우, 해당 ID는 15입니다.

 

InnoDB 테이블은 메모리에 기록 된 최대 규모의 기본 키 ID를 증가합니다, 그래서 다시 시작한 후 ID의 가장 큰 손실이 발생할 것입니다.

(166)는 어떻게 데이터베이스의 현재 버전을 얻으려면?

MySQL 데이터베이스의 현재 버전을 얻기 위해 선택 버전 ()를 사용합니다.

ACID는 그것에 대해 이야기 무엇 167?

  • 원 자성 (자성) : 트랜잭션 (트랜잭션)에서, 또는 모두 완료 완료, 또는 모든 작업은 링크의 중간에 끝나지 않습니다. 트랜잭션 오류는 트랜잭션이 동일한을 수행하지대로, 트랜잭션의 시작 전의 상태로 (롤백)을 복원됩니다, 실행 중에 발생합니다. 즉, 돌이킬 수없는 불가분의 거래이다.

  • 일관성 (일관성) : 트랜잭션이 시작되기 전에 트랜잭션의 종료 후, 데이터베이스의 무결성이 손상되지 않습니다. 이렇게 기록 된 데이터는 모든 기본 제약 조건, 트리거 및 기타 계단식 롤백을 완전하게 준수해야한다는 것을 의미합니다.

  • 격리 (차단) 데이터베이스 동시 트랜잭션 복수의 다수의 트랜잭션들에 동시에 데이터 일관성 크로스 실행 결과를 수행 할 때의 동시 읽기 및 쓰기 기능 및 데이터 수정은, 분리를 방지 할 수 있습니다. 확약 읽기 (커밋되지 않은 읽기)를 포함하여 다른 수준으로 분할 트랜잭션 격리은 (확정 읽기), 반복 읽기 (반복 읽기) 및 직렬화 (직렬화) 커밋 된 읽기.

  • 내구성 (지속성) : 트랜잭션 후, 데이터를 수정하는 시스템 오류가 손실되지 않습니다 경우에도 영구적입니다.

무슨 차이가 168 문자이며, VARCHAR은?

CHAR (N) : 고정 길이의 유형, "ABC"세 개의 문자를 입력 등 가입 (10)로, 공간이나 문자의 10 바이트를 차지하고, 나머지 일곱은 널 (null) 바이트.

장점 채팅 : 고효율, 단점 : 공간, 응용 프로그램 시나리오 : 사용 문자에 대한 MD5 값을 저장하는 암호, 고정 길이가 매우 적합합니다.

VARCHAR (N) : 가변 길이의 값은, 그 길이의 바이트 길이를 기록하는 데 사용되는 각각의 바이트의 값과 함께 차지 저장된다.

따라서, 적절한 공간 고려 varcahr에서, 효율 모두 트레이드 오프의 사용으로 적합한 것으로 간주 CHAR.

차이 169 플로트와 두 배는 무엇인가?

  • 플로트 팔 소수점 자리까지 저장하고 메모리에 4 바이트를 차지 할 수 있습니다.

  • 대부분의 이중 가게 16 진수, 그리고 메모리에 8 바이트 수 있습니다.

(170) mysql을하기 Ko, 왼쪽은 바로 차이점은 무엇입니까 조인?

욕실 키워드 : 내부 조인 왼쪽 연결 : 가입 왼쪽, 오른쪽 연결 : 바로 가입 할 수 있습니다.

 

연결이 도시 된 정합 데이터와 연관되고, 왼쪽은 왼쪽에 표시되는 모든 테이블에 연결되고, 우측의 표는 정규화 된 데이터를 도시 한 도면 오른쪽 대향 연결.

171 MySQL의 인덱스는 어떻게 달성하는 것입니다?

인덱스는 데이터를 찾을 효율적으로 달성하기 위해 특정 검색 알고리즘을 만날 수있는 데이터 구조, 데이터에 어떤 방법으로 이러한 데이터 구조입니다.

 

특히, 인덱스에 MySQL을 한 후, 다른 데이터 엔진은 다른 달성하기 위해,하지만 현재 주류 데이터베이스 엔진 B + 트리 인덱스 구현, 효율성 B 검색 + 나무, 성능 이분법에 도달 데이터 영역을 찾을 수 있습니다 우리는 완전한 데이터 구조를 발견하고 모든 인덱스의 성능이 더 좋다.

172 인덱스 MySQL은 어떻게 수요를 충족 여부를 확인하기 위해?

실행되는 SQL 쿼리를 사용하는 방법에 대해 설명 뷰, 인덱스는 사용자의 요구를 분석하는 것이다.

 

语法 설명 : 테이블 유형 = 1 SELECT * FROM을 설명합니다.

173은 트랜잭션 격리 데이터베이스에 대해 뭐라고?

MySQL의 트랜잭션 격리는 MySQL의 INI 구성 파일에 추가하고, 마지막으로 파일 :. 트랜잭션 격리 수준 = REPEATABLE-READ에 추가되었다

 

사용 가능한 설정 값 : 읽기 UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE.

 

  • 커밋되지 않은-READ : 확약 읽기, 가장 낮은 격리 수준은 커밋되지 않은 트랜잭션하기 전에, 그것은 (매직 읽을 더러운 읽기, 반복 불가능한 읽기) 다른 트랜잭션 읽을 수 있습니다.

  • COMMITTED-READ : 트랜잭션이 (팬텀 읽기 원인, 비 반복 읽기) 다른 트랜잭션에 의해 읽을 수 커밋 후 커밋 읽어 보시기 바랍니다.

  • REPEATABLE-READ : 동일한 데이터를 여러 번 읽고, 반복 읽기, 기본 수준, 내용 및 거래 시작 시간의 값이 같은 다른 데이터 커밋되지 않은 트랜잭션을 금지 읽기 (원인 팬텀 읽기)인지 확인하기 .

  • SERIALIZABLE : 직렬화는 비싼 가장 신뢰할 수있는 격리 수준, 오염을 방지 할 수있는 격리 수준 읽기, 반복 불가능한 읽기, 유령 읽기.

 

더러운 읽기 : 트랜잭션이 다른 트랜잭션이 커밋되지 않은 데이터를 읽을 수 있습니다. 예를 들어, 트랜잭션이 제출되지 않은 시점에서 트랜잭션 기록를 삽입하려고하고 A에 다른 거래 기록을 읽으려고합니다

 

비 반복 읽기 : 동일한 데이터를 여러 번 읽고, 트랜잭션을 의미합니다.

 

매직 독서 : 동일한 트랜잭션 쿼리 결과 세트가 동일하지 않습니다 반환 내에서 여러 번 언급한다. 예를 들어, 동일한 N 트랜잭션 레코드가 첫 번째 조회하지만, 동일한 조건에서 제 문의는 환각 보인다 N + 1 기록이있다. 또 다른 트랜잭션이 추가하거나 삭제하거나 첫 번째 트랜잭션 데이터 안에 설정 결과를 수정하기 때문에 매직 읽기가 발생, 데이터 내용 같은 기록은 기록 된 모든 데이터 라인보다 더 많거나 더 적은이되고, 수정됩니다.

일반 엔진에 대한 174 MySQL의 이야기?

이노 엔진 : 이노 데이터베이스 엔진이 산 문제에 대한 지원을 제공하고, 또한 제약 행 수준 잠금을 제공하고, 외래 키는, 그것의 디자인 목표는 큰 데이터 용량 데이터베이스 시스템을 처리하는 것입니다. MySQL의를 실행하는 경우, InnoDB의 버퍼 풀은 버퍼링 데이터와 인덱스 메모리에 생성됩니다. 그러나 엔진이 전체 텍스트 검색뿐만 아니라 상대적으로 느린 시작을 지원하지 않습니다, 그것은 저장되지 않습니다 테이블의 행 수는 테이블 명령에서 SELECT COUNT (*)를 수행 그렇게 할 때 때 전체 테이블 스캔의 필요성. 때문에 잠금의 작은 크기로, 잠금은 전체 테이블을 쓰기 때문에 동시성 현장의 높은 수준에서 효율성을 증가 사용하지 않습니다.

 

MyIASM 엔진 : MySQL의 기본 엔진은 있지만, 거래, 행 수준 잠금에 대한 지원을 제공하지 않습니다 및 외래 키를 지원하지 않습니다. 쓰기 작업을 수행 삽입 및 업데이트 문이 필요 테이블을 잠글 때 수행되는 경우에 따라서는 줄어들 것 효율을 발생합니다. 차이가 있으며, 이노, MyIASM 엔진은 테이블의 행 수를 유지하기 위해, 그래서하지만 문이 직접적으로 전체 테이블을 스캔 할 필요없이 저장된 값을 읽을 수있을 때 테이블에서 SELECT COUNT (*)를 수행 할 때. 따라서, 테이블은 쓰기 작업을하고, 선호하는 데이터베이스 엔진으로 MyIASM을 할 수있는 트랜잭션의 지원을 필요로하지 않는 것보다 훨씬 더 읽으면.

MySQL의 행 잠금과 테이블 잠금에 대한 175 이야기?

의 MyISAM은 기본적으로 테이블 잠금, 이노 지원 테이블 및 행 잠금, 행 잠금을 지원합니다.

 

  • 테이블 수준 잠금 : 작은 오버 헤드가 빠르고, 잠금, 교착하지 않습니다. 큰 입자 크기, 잠금 충돌의 가능성이 가장 높은 동시성의 최소 금액을 잠급니다.

  • 행 수준 잠금 : 큰 오버 헤드, 느린 잠금, 교착 상태가 될 것입니다. 잠금 노력, 잠금 충돌의 작은 확률, 동시성의 최고 수준.

(176) 뭔가 낙관적 비관적 잠금 말?

  • 낙관적 잠금 : 다른 사람이 데이터를 선택할 때마다 잠겨되지 않도록, 수정되지 않지만 다른 사람이 데이터를 업데이트 할 필요가 없습니다 결정됩니다이 기간 동안 업데이트 제출하는 경우.

  • 비관적 잠금 : 사람들이 잠금이 해제 될 때까지 차단됩니다이 데이터를 가지고 할 수 있도록 데이터를 데리러 다른 때마다 누군가가, 그래서 때마다 그녀는 데이터가 잠 깁니다했다, 수정 된 것으로 간주한다.

 

하지하지 않을 경우 데이터베이스의 낙관적 잠금이 구현해야, 내부의 테이블에 각 수정 성공 값에 1을 더한 버전 필드를 추가, 그래서 당신은 데이터베이스의 버전과 현재 버전이있는 경우 각각의 수정은 첫 번째는, 비교할 때, 그리고 수정, 너무 낙관적 잠금을 달성하기 위해.

이 의미 177 MySQL의 문제 해결이 필요하세요?

  • 현재 쇼 PROCESSLIST 모든 연결 정보를 볼 수 명령을 사용하십시오.

  • SQL 문 실행 계획을 조회하는 명령을 설명합니다.

  • 느린 SQL 쿼리 속도가 느린 쿼리 로그를 켭니다.

178 어떻게 MySQL의 성능 최적화를합니까?

  • 검색 필드에 대한 인덱스를 작성합니다.

  • 선택 *를 사용하지 말고, 조회 할 수있는 필드가 나열되어 있습니다.

  • 수직 분할 파트 테이블.

  • 올바른 스토리지 엔진을 선택.

 

(끝)

추천

출처www.cnblogs.com/xiaofengwang/p/11258892.html