본문 바로가기
반응형

Database/MYSQL238

[MySQL] 바쁜 서비스 투입 전, 이런 캐시 전략 어때요? [MySQL] 바쁜 서비스 투입 전, 이런 캐시 전략 어때요? Overview 데이터베이스를 운영한다는 것은 최적의 상태로 리소스를 “쥐어짜면서” 가장 효율적으로 데이터를 끄집어내야할텐데요. 지금은 SSD 디스크 도입으로 상당 부분 Disk I/O가 개선되었다지만, 여전히 메모리 효율은 굉장히 중요합.. 2019. 2. 15.
Mysql CHARSET 체크 CHARSET 25 CHARSET(str) Returns the character set of the string argument. mysql> SELECT CHARSET('abc'); -> 'latin1' mysql> SELECT CHARSET(CONVERT('abc' USING utf8)); -> 'utf8' mysql> SELECT CHARSET(USER()); -> 'utf8' 2019. 2. 8.
Mysql 5.7 log_warnings log_warnings PropertyValueCommand-Line Format--log-warnings[=#]Deprecated5.7.2System Variablelog_warningsScopeGlobalDynamicYesTypeIntegerDefault Value (64-bit platforms, >= 5.7.2)2Default Value (64-bit platforms, <= 5.7.1)1Default Value (32-bit platforms, >= 5.7.2)2Default Value (32-bit platforms, <= 5.7.1)1Minimum Value0Maximum Value (64-bit platforms)184467440737.. 2019. 2. 7.
시스템 파라미터(스토리지 엔진) innodb_purge_threads=1 ~ 32(기본 값: 1) innoDB엔진에 생성된 테이블은 오라클과 비슷하게 undo 세그먼트를 사용한다. 버퍼 캐시의 변경된 내용은 주기적으로 디스크로 써야 하는데, 오라클의 경우 1개 이상의 DBWn라는 대몬이 전담하여 이를 처리하고 있는 것처럼 mariaDB도 디스크로 내려쓰는 역할을.. 2018. 12. 14.
데이터베이스 Isolation Level Isolation Level 의 필요성 데이터베이스의 무엇보도 중요한 기능은 데이터를 정확하고 안전하게 저장하며 데이터의 변경이나 수정시 제한을 두어 안정성을 저해하는 요소를 막아 데이터 상태들을 항상 옳게 유지하는 것을 의미한다. 즉, 흔히 말하는 무결성을 보장하는 것이다. 데이터의 무.. 2018. 12. 14.
MySQL 트랜잭션 Isolation Level로 인한 장애 사전 예방 법 Overview MySQL에서 전체 데이터를 Scan 하는 쿼리를 질의하여 서비스에 큰 영향이 발생할 수 있습니다. InnoDB 스토리지 엔진의 기본 Isolation Level이 REPEATABLE-READ이기 때문에 발생하는 현상인데, 이것은 세션 변수 일부를 변경하여 문제를 사전에 해결할 수 있습니다. 얼마 전 이와 비슷한 장애가 .. 2018. 12. 14.
MySQL Replication과 Galera Cluster에 대하여 MySQL Replication과 Galera Cluster에 대하여 Galera에 대해 말하기 전에, 우선 MySQL의 복제 방식에 대해 알아보자. 일반적으로 Master/Slave 방식으로 구성한다. 2개 노드 중 한 노드는 Read, 한 노드는 Write를 담당하게끔 한다. DB마다 차이는 있지만 보통 Read 작업의 비중이 더 크다. 따라서 Read/Write의 분리.. 2018. 12. 14.
MySQL Galera Replication MySQL Galera Replication 조대협 (http://bcho.tistory.com) RDBMS 오픈소스 중에서 단연 가장 많이 사용되는 것은 MySQL인데, 근래에 웹 스케일이 커지면서, 단일 인스턴스로만 서비스가 불가능한 용량까지 가게 되서, 이 MySQL에 대한 클러스터링 스케일링에 대한 이슈가 많아졌다. 이에 Tungsten, MySQL Replicati.. 2018. 12. 12.
MySQL 원격 증분 백업 – Percona XtraBackup MySQL 원격 증분 백업 – Percona XtraBackup # Percona XtraBackup 소개 이미 예전에 XtraBackup을 간단하게 소개한 글을 썼었는데 그 글의 내용만으로는 XtraBackup을 실무에 쓰기에 턱없이 부족하다. 그래서 이번에는 XtraBackup을 제대로 쓸 수 있는 문서를 만들었다. 일반적으로 MySQL 백업으로 mysqldump를 사용하는데 매번 전체를 백업하는 방식이므로 데이터가 커질수록 백업에 걸리는 시간이 길어지고 부담이 커진다. 뿐만 아니라 백업된 데이터를 복구하는데도 무척 긴 시간을 필요로 한다. 하지만 XtraBackup을 사용하면 마지막 백업으로부터 변경된 사항만 이어서 백업하는 증분 백업이 가능하다. XtraBackup은 MySQL의 데이터 디렉토리 .. 2018. 12. 12.
Mysql 5.7 GIS GEOMETRY 의 거리계산방식 Mysql 5.7 GIS GEOMETRY 의 거리계산방식 DROP TABLE test_geom; CREATE TABLE test_geom ( `mem_geo` GEOMETRY NOT NULL COMMENT 'Geo좌표', SPATIAL KEY `i_geomidx` (`mem_geo`) ) ENGINE=MYISAM DEFAULT CHARSET=utf8 COMMENT='data'; INSERT INTO test_geom (mem_no,mem_geo) VALUES (1,GEOMFROMTEXT(CONCAT('POINT(126.847676 35.145623)'))); INSERT INTO test_geom (mem_no,mem_geo) VALUES.. 2018. 12. 4.
DB JOIN 원리 *JOIN 원리 DBMS 작동원리 : 평소에 데이터는 하드디스크의 데이터 파일에 저장해 두었다가 필요한 시점에 메모리로 복사한다. (오라클은 이때 사용하는 메모리를 데이터베이스 버퍼 캐시라고한다) 여기서 중요한 것은 칼럼 100개를 가진 테이블이 하드디스크에 저장되어 있을 때 사용자가 .. 2018. 11. 16.
log_queries_not_using_indexes 인덱스 타지 않은 SQL 수집 SET GLOBAL log_queries_not_using_indexes = 1; SET GLOBAL log_queries_not_using_indexes = 0; 2018. 10. 26.
System variables –log_warnings 에러 로그에 경고 메시지를 생성하는 옵션으로 기본값은 5.7.2이전에는 1, 이후에는 2로 활성되어있다. 5.7.2부터 log_warnings에 의해 관리되는 정보는 log_error_verbosity에 의해 관리되며 log_error_verbosity는 이전 log_warnings 보다 우선 사용된다. log_warnings에 값을 할당하면 log_error_verbosity에도 할당이 되며 반대의 경우에도 마찬가지로 적용된다. log_warnings=0은 log_error_verbosity=1(오류만)으로 수행 log_warnings=1이상은 log_error_verbosity=2(경고)로 수행 log_warnings=2는 log_error_verbosity=3(메모)로 수행 5.7.2부터 log_e.. 2018. 10. 15.
Mysql timeout 종류 및 설명 delayed_insert_timeout : 300 (insert시 delay될 경우 대기하는 시간) interactive_timeout : 3600 (활동중인 커넥션이 닫히기 전까지 서버가 대기하는 시간) net_read_timeout : 30 (서버가 클라이언트로부터 데이터를 읽어들이는 것을 중단하기까지 대기하는 시간) net_write_timeout : 60 (서버가 클라이언트에 데이터.. 2018. 9. 14.
[MySQL] 전문 검색 인덱스 전문 검색(Full Text Search) 인덱스 인덱스 알고리즘은 일반적으로 크지 않은 데이터 또는 이미 키워드화돼 있는 작은 값에 대한 인덱싱 알고리즘이었습니다. 대표적으로 MySQL의 B-Tree 인덱스는 실제 컬럼의 값이 1MB라 하더라도 1MB 전체의 값을 인덱스 키로 사용하는 것이 아니라 1,000바이트(My.. 2018. 9. 14.
Optimize MySQL table_open_cache table_definition_cache System VariableNametable_definition_cacheVariable ScopeGlobalDynamic VariableYesPermitted ValuesTypeintegerDefault-1 (autosized)Min Value400Max Value524288The number of table definitions (from .frm files) that can be stored in the definition cache. If you use a large number of tables, you can create a large table definition cache to speed up opening of t.. 2018. 8. 6.
SQL Yog euckr DB 연결했을때 한글등 깨질경우 처리 mysql> SHOW GLOBAL VARIABLES LIKE '%character%' mysql> SHOW SESSION VARIABLES LIKE '%character%' SQL YOG 접속화면 # Advanced => Init command(s)에 입력함 SET SESSION character_set_client=utf8;SET SESSION character_set_connection=utf8;SET SESSION character_set_database=euckr;SET SESSION character_set_results=utf8;SET SESSION character_set_server=euckr; 2018. 7. 31.
MySQL Block Nested Loop (BNL)에 대한 이해 이번 시간에 살펴볼 내용은 Block Nested-Loop (이하 BNL)입니다. MySQL이 BNL을 제공하는 이유는 Nested Loop 조인만 지원하는 한계점을 보완하기 위해서입니다. 예를 들어, 조인 칼럼 인덱스가 없다고 가정해보죠. 이 경우, ORACLE과 PostgreSQL과 같은 DBMS는 해시 조인 또는 머지 조인을 사용합니다. 그런.. 2018. 6. 20.
Mysql 5.7 유저 생성시 달라진점(CREATE USER) Mysql 5.7 유저 생성시 달라진점(CREATE USER) # 5.7 이전 버젼 GRANT SELECT, INSERT, UPDATE, DELETE,CREATE,EXECUTE ON DB_NAME.* TO 'USER'@'HOST' IDENTIFIED BY 'PASSWORD'; FLUSH PRIVILEGES; # 5.7에서 실행시 경고 "MySQL is started in --skip-name-resolve mode; you must restart it without this switch for this grant to work" "Using GRANT statement to modify existin.. 2018. 5. 16.
MySQL_5.7의 n-gram MySQL5.6부터는 InnoDB에서도 전문검색이 가능하기는 하였지만 공백 기준으로 단어들이 파싱이 되는 “MeCab Full-Text Parser Plugin” 방이라 아쉬움이 많았다. 특히 한국말처럼 공뱁만으로 단어를 파싱할수 없는 그런 언어들이 있기때문이죠. 그런데 MySQL 5.7부터는 n-gram 방식의 전문 검색 인덱스.. 2018. 5. 9.
반응형