복습편-mysql

6241 단어 기초편복습편
mysql 면접 총결산, 간단명료, 기억
  • mysql에는 몇 가지 인덱스 형식이 있습니다.
  • Mysql의 저장 엔진, myisam과 innodb의 차이점:
  • 데이터베이스 인덱스 키와 유일한 인덱스는 어떤 차이가 있습니까
  • MySQL 행 잠금이 꺼져 있습니까?
  • 집합 인덱스와 비집합 인덱스의 차이
  • innoDB의 B+트리 인덱스 잎 노드의 Data역은 무엇을 저장합니까?
  • MyISAM의 B+ 트리 인덱스 잎 노드의 Data 도메인은 메인 키입니까 아니면 물리적 주소입니까?
  • 데이터베이스의 기본 특징은?
  • 색인을 사용했는지 안 사용했는지 어떻게 판단합니까?
  • 최적화 sql의 주의사항:
  • mysql 필드 형식은?
  • 한 표에 여러 개의 인덱스?
  • mysql는 어떻게 최적화합니까?
  • mysql 자물쇠?
  • mysql은 어떻게 한 줄만 잠그나요?
  • mysql 자물쇠의 최적화 제안:
  • 주종 복제의 기본 원리:
  • 작은 시계 구동 큰 시계:
  • 분고분표:
  • 라이브러리 리스트의 중간부품:
  • 분고분표의 방식:
  • 데이터 마이그레이션 시나리오:
  • 동적 용량 확장과 축소를 할 수 있는 라이브러리 리스트 방안을 어떻게 설계합니까?
  • 라이브러리 리스트 이후 id 메인 키는 어떻게 처리합니까?
  • 분고분표 후 어떻게 페이지를 나누어 조회합니까?(신규 제목)
  • mysql에는 다음과 같은 몇 가지 색인 유형이 있습니다.
    1.    
    2.    
    3.    
    4.    	
    

    Mysql의 메모리 엔진, myisam과 innodb의 차이점:
    1.MyISAM          ,           。  ,      ,     ,   。
    2.innodb          ,               ,         (           ),     ,   。
    

    데이터베이스 인덱스 키와 유일한 인덱스는 어떤 차이가 있습니까
    	1.        ,         
    	2.    ,      
    	3.             ,        
    	4.     ,       
    	5.             ,               
    

    MySQL 행 잠금이 꺼져 있는 경우가 있습니까?
    	 ,              。  
    	1.  mysql       ,       。
    	2.  sql  
    

    집합 인덱스와 비집합 인덱스의 차이
    	1.(    )                                            
    	2.(     )                                   
    

    innoDB의 B+트리 인덱스 잎 노드의 Data역은 무엇을 저장합니까?
    	        
    

    MyISAM의 B+ 트리 인덱스 잎 노드의 Data 도메인에 기본 키가 저장됩니까? 아니면 물리적 주소가 저장됩니까?
    	         
    

    데이터베이스의 기본 특징은?
    	   、   、   
    

    어떻게 당신의 ql문장이 인덱스에 사용되었는지 판단합니까?
    실행 계획 EXPLAIN 보기
    explain(실행계획)에 포함된 정보는 매우 풍부하므로 다음과 같은 몇 개의 필드 정보를 주목합니다.
    1. id,select 자문 또는 표 실행 순서, id가 같고 위에서 아래로 실행됩니다. id가 다르면 id 값이 클수록 실행 우선순위가 높습니다.2. type, type의 주요 수치와 sql의 좋고 나쁨을 나타내는 정도(좋은 것부터 나쁜 것까지): 시스템>const>eqref>ref>range>index>ALL.보증range,ref까지.3. 키, 실제 사용되는 색인 열.4.ref, 관련 필드, 상수 등 값 조회,const로 표시되며, 연결 조회를 위해 관련 필드를 표시합니다.5.extra, 추가 정보, 우선 순위 Using index>Using filesort(구사일생)>Using temporary(십사무생)를 사용합니다.
    우선 순위 Using index>Using filesort(구사일생)>Using temporary(십사무생)를 사용합니다.바로 다음 두 항목이 나타나면 sql문장이 매우 엉망이라는 것을 나타낸다. 최적화가 급히 필요하다!!!
    sql 최적화 주의사항:
    ① 최고의 왼쪽 접두사 법칙.
    1.      ,       ,     explain     ,  mysql       。
    
    2.   order by ,      、  ,       Using filesort   。
    

    ② group by는 Using temporary를 쉽게 생성합니다.
    ③ 통속적 이해 구결:
    전치가 내가 가장 좋아하는 것과 일치하고 왼쪽 접두사는 준수해야 한다.앞장서는 형은 죽을 수 없고, 중간에 형제는 끊어질 수 없다.색인열에 계산을 적게 하고 범위 이후에는 모두 효력을 상실합니다.LIKE는 맨 오른쪽으로 쓰고 색인을 덮어쓰고 별을 쓰지 않습니다.부등공치 or, 인덱스 실효는 적게 사용합니다.
    mysql 필드 형식?
    char  ,    ,      ,              
    vachar       ,       
    

    한 표에 여러 개의 색인이 있습니까?
                  16   
    

    mysql는 어떻게 최적화합니까?
    1.       
    2.   EXPLAIN        
    3.  sql 108   
    4.show profile     15      (Show Profile mysql              sql              ,   sql     。           ,     15      。)
      show profile all,block all for query X;
    

    mysql 자물쇠?
    1.  
    2.  
    3.   ,     ,            ,        
    4.    (            ,mysql     +                ,              )
    

    mysql 어떻게 한 줄만 잠그나요?
      for update
    ps: select * from student s where s.name = 'zhangsan' for update;
    

    mysql 잠금 최적화 제안:
    ①                ,            。
    ②      ,        。
    ③            ,     。
    ④        ,            。
    ⑤           。
    

    주종 복제의 기본 원리:
    ①master           (binary log),               (binary log events)。
    ②slave master binary log events       (relay log)。
    ③slave          ,             。MySQL           。
               :1  
    

    작은 테이블이 큰 테이블을 제어합니다.
    in       ,exists       。
      :in ,exists 。
    ps: select *from tb_emp_bigdata A where A.deptno in (select B.deptno from tb_dept_bigdata B) (A ,B )
    ps: select *from tb_dept_bigdata A where exists(select 1 from tb_emp_bigdata B where B.deptno=A.deptno); (A ,B )
    

    라이브러리별 테이블:
              
                
      :    ,      
    

    라이브러리 테이블의 중간부분:
    sharding-jdbc:sharding-jdbc    client             ,     ,             ,    
    mycat:mycat    proxy             ,         ,     ,                ,                      
    

    라이브러리 테이블을 나누는 방법:
    1.   range   ,            ,              ,         ,           ,               
    2.      hash      ,     ,                  ;             ,           ,            hash             
    

    데이터 마이그레이션 시나리오:
    1.    
    2.      (1.             ,2.          ,3.                        ,4.                         ,5.           ,                  50      hash,    )
    

    어떻게 동적 용량 확장과 축소를 할 수 있는 라이브러리 리스트 방안을 설계합니까?
               %32       ,                         ,     
    

    라이브러리 리스트 이후 id 메인 키는 어떻게 처리합니까?
    1.      id (       redis id    ,redis          )
    2.      sequence          
    3.UUID
    4.    
    

    분고 분표 후 어떻게 페이지를 나누어 조회합니까?(신규 제목)
    1. 글로벌 시야법: N페이지의 데이터(매 페이지 S조의 데이터)를 얻으려면 각 하위 라이브러리의 앞 N페이지(offset 0,limit N*S)의 모든 데이터를 먼저 찾아내고(선별 조건이나 정렬 규칙이 있으면 포함) 각 하위 라이브러리의 결과를 합친 후,다시 우리가 평소에 일반적인 페이지 조회를 하면 (같은 선별 조건을 가지지 않아도 되지만 정렬 규칙도 가지고) 최종 결과를 얻을 수 있다. 이런 방식은es페이지의 논리와 유사하다.장점: 데이터가 정확하고 페이지를 뛰어넘을 수 있는 단점: 깊이 페이지를 나눌 때의 성능이 떨어진다. 즉, 페이지 파라미터가 증가함에 따라 네트워크 전송 데이터의 양이 점점 커지고 각 하위 테이블마다 조회해야 할 데이터가 많을수록 성능도 느려진다.
    2. 페이지 나누기 금지법: N페이지의 데이터를 얻으려면 첫 페이지는 전역시야법과 일치하지만 두 번째 페이지가 시작된 후에 모든 하위 라이브러리에서 조회해야 할 때이전 페이지의 필터 조건을 제외할 수 있습니다 (예를 들어 시간별로 정렬할 때 이전 페이지의 최대 시간을 가져오면 time > ${maxTime lastPage} 조건을 추가해야 합니다. 정렬 규칙이 없으면 기본 키 id의 정렬 규칙이기 때문에 id > ${maxId lastPage} 조건을 추가해야 합니다.) 그리고 limit S를 추가하면 각 하위 라이브러리의 결과를 얻을 수 있습니다.나중에 합병하면 탑S가 최종 결과를 얻을 수 있다.유사한 앱의 목록 밑에 있는 장면에서는 업무상 페이지 조회를 금지할 수 있으며 이럴 때 이런 방식을 사용할 수 있다.장점: 데이터가 정확하고 성능이 양호하며 단점: 페이지를 뛰어넘을 수 없다
    4. 모호한 조회법 등: 모호한 조회법은 조회 결과가 정확하지 않기 때문에 편집자가 종합하지 않아서 관심 있는 친구가 스스로 연구할 수 있다.

    좋은 웹페이지 즐겨찾기