MySQL_Section/운영
-
MySQL의 max_connections과 thread_cache에 대해MySQL_Section/운영 2014. 11. 18. 14:30
MySQL의 max_connections과 thread_cache에 대해 앞의 MySQL Connection Manager와 Thread Manager의 소스분석에서 살펴보았듯이 연결 설정자, 스레드 설정자에 대해서 알면 도움이 될 거 같아서 몇자 정리해 봅니다. BMT 도구 마련 BMT의 도구로는 super-smack을 사용해 보기로 한다. 주요한 특징은 아래와 같다. MySQL과 PostgreSQL에서 동작함. C++로 만들어져 추가 라이브러리(드라이버 등)가 필요없고 수정이나 확장이 용이함 시나리오 파일(smack파일)로 다양한 쿼리를 구사하게 함. 복수의 클라이언트를 가상 fork()로 생성하고 각 클라이언트(자식 프로세스)가 쿼리를 실행함. 데이터(영문숫자)를 생성하는 툴도 존재함 쿼리는 mys..
-
Index 추가 삭제MySQL_Section/운영 2014. 11. 18. 14:28
1. 기존 테이블에 필드 추가 1 ALTER TABLE `table_name` ADD `uniqid` VARCHAR(20) NOT NULL DEFAULT '' AFTER `no`; 위 쿼리는 table_name 테이블에 no 필드 다음에 uniqid 필드를 VARCHAR(20) 타입으로 추가한다. 2. 필드타입 변경 1 ALTER TABLE `table_name` MODIFY COLUMN no INT(11) NOT NULL; 위 쿼리는 table_name의 no 필드 타입을 INT(11)로 변경한다. 3. INDEX KEY 추가 1 ALTER TABLE `table_name` ADD INDEX Index1 (uniqid, no); 위 쿼리는 table_name 테이블에 uniqid 와 no 필드를 Ind..
-
MySQL 단일 코어에서 데이터 처리 방식MySQL_Section/운영 2014. 11. 14. 18:00
MySQL 세가지 특성? MySQL 3.X 버전으로 광고 시스템을 만든 적이 있습니다. 꽤나 오래된 얘기.. 지금 생각하면 당시 광고 시스템에서 DB에 날리는 쿼리는 간단하기는 했지만, 상당한 트래픽을 무난히 견디는 것을 보고 감탄을 금치 않았습니다. 와~! 이거 물건인데? 제 첫 사용 소감이었습니다.하지만 “과연 MySQL에 대한 중요한 특성을 잘 알고 있었을까?” 라는 생각이 들었습니다.그때부터였다. MySQL이라는 녀석과 진지한 악수를 한번 해보고 싶다는 생각을 한 것이.. 그래서 여기저기 해외 사례도 기웃거리고, 서적도 진지하게 읽기 시작했죠. 읽으면서 틈틈이 벤치마킹도 수행해보고 나름의 지식 베이스를 늘려갔습니다. 단일 코어에서 Nested Loop Join 처리 다양한 스토리지 엔진 데이터 복..
-
MySQL - 실행 계획MySQL_Section/운영 2014. 11. 13. 18:33
쿼리 실행 절차 - 요청된 SQL 문장을 잘게 쪼개서 MySQL 서버가 이해할 수 있는 수준으로 분리 - SQL 파싱정보(파스트리) 확인하면서 어떤 테이블부터 읽고 어떤 인덱스 쓸지 선택 - 결정된 테이브르이 읽기 순서나 선택괸 인덱스를 이용해 스토리지 엔진으로부터 데이터 가져옴 옵티마이저 종류 - RBO : 규칙 기반 최적화 - 옵티마이저내 우선순위로 계획 수립, 항상 동일 절차 나타남. - CBO : 비용 기반 최적화 - 통계정보를 이용함. 통계정보 갱신 - ANALYZE TABLE tb_name; - ALTER TABLE tb_name ANALYZE PARTITION p3; - MyISAM : Analyze 시 테이블은 읽기만 가능 - InnoDB : Analyze 시 테이블 읽기 쓰기 모두 불가능..
-
MySQL Partition 기능과 활용MySQL_Section/운영 2014. 11. 13. 17:59
MySQL Partition 기능과 활용 2013/02/12 15:51 Partition 은 분리, 분할 한다는 의미이다.정보는 많아지고 처리해야할 데이터도 점점 많아지고 있으며, 이러한 데이터의 빠른 처리를 위한 방법 중 하나로 MySQL에서는 Partition 을 지원하고 있다.MySQL 에서 Partition은 저장할 데이터를 분할하여 관리함으로써 보다 빠른 데이터처리를 할 수 있도록 도와 준다. MySQL 에서 Partition은 V5.1부터 가능하다. Partitioning하지 않고 하나의 큰 테이블로 사용할 경우 그 만큼 인덱스도 커지고, 물리적인 공간도 많이 필요해진다.Partition을 하게 되면 데이터와 인덱스를 조각화하여 물리적 공간을 효율적으로 사용할 수 있게 만들어 준다.-. 100..
-
MySQL Index 관리편MySQL_Section/운영 2014. 11. 13. 16:02
요새 MySQL을 다루고 있어서 검색하는 중에 괜찮은 글이 있어 정리해둔다. 테이블 설계 시 유의 사항 1. 반드시 Primary Key를 정의하고 최대한 작은 데이터 타입을 선정한다.로그 성 테이블에도기본적으로 PK 생성을 원칙으로 함InnoDB에서 PK는인덱스와 밀접한 관계를 가지므로 최대한 작은 데이터 타입을 가지도록 유지 2. 테이블 Primary Key는 auto_increment를 사용한다.InnoDB에서는 기본키 순서로 데이터가 저장되므로, Random PK 저장 시 불필요한 DISK I/O가 발생 가능InnoDB의 PK는절대 갱신되지 않도록 유지(갱신 시 갱신된 행이후 데이터를 하나씩 새 위치로 옮겨야 함) 3. 데이터 타입은 최대한 작게 설계한다.시간정보는MySQL데이터 타입 date/d..
-
mysql-admin-cookbook 책에서 'Monitoring and Analyzing MySQL Installation'MySQL_Section/운영 2014. 11. 13. 16:00
이 문서는 mysql-admin-cookbook 책에서 'Monitoring and Analyzing MySQL Installation' 을 정리한 것입니다. 1.InnoDB Tablespace 빈공간 체크하기. MySQL의 디폴트 엔진인 'MyISAM'의 경우 각각의 테이블들에 대응하여 파일시스템상에서 파일들이 생성이 되어진다. 따라서 데이터가 계속 쌓인다 하더라도 파일시스템상에 빈공간이 남아있으면 별문제가 되지 않는다. 하지만 InnoDB는 다르다. 확인하는 방법은 모든 데이터베이스에 테이블들에 대해서 다음과 같이 확인을 하는 것이다. [code sql] SELECT DATA_FREE/(1024*1024) AS FREE_MB, TABLE_SCHEMA, TABLE_NAME FROM INFORMATION..
-
JMeter를 이용한 JDBC 테스트MySQL_Section/운영 2014. 11. 13. 15:58
JMeter를 이용한 JDBC 테스트 + [programming] | 2013/07/26 17:13 DBMS의 성능 지표를 나타내는 여러 기준이 있지만 그 중 가장 대표적인 것 중 하나가 SysBench 입니다.SysBench는 MySQL Sever Benchmarking으로 만들어 졌지만 이제는 다양한 database 성능 테스트를 지원하고, CPU, Threads, Mutex, Memory, File I/O 성능 테스트 까지 그 영역을 넓혀가고 있는 중입니다.하지만 SysBench는 특정 쿼리를 통한 성능 테스트가 불가능 하며, GUI 미지원 및 결과 레포트의 부실함 등의 한계를 가지고 있어서 JMeter를 이용한 JDBC 벤치마크를 만들어 보도록 하겠습니다. Sysbench OLTP Bechmark..