전체 글 132

[MySQL] 새로운 설정 시 MySQL 캐시 지우기? FLUSH PRIVILEGES

테이블 내 칼럼 타입 형변환을 해야 하는 상황이 발생해 타입변환 이전에 백업용으로 테이블을 복제해놓았는데 두 테이블 간 용량 차이가 나는 걸 발견했다. (백업용 테이블의 용량이 더 작은 상황) 그 이유는 바로 테이블을 복제할 때 인덱스 등으로 물려 있었던 MySQL 캐시는 날아간채로 복제됐기 때문이라고 한다. 즉 기존의 테이블은 가비지 컬렉션과 같은 데이터를 가지고 있었던 것이다. 사실 DB의 설정을 바꾼다는 것 자체가 자주 있어서는 안되는 일이지만 지금과 같이 어쩌다 어쩔 수 없이 설정 상의 변경이 필요한 경우에는 아래의 명령어를 통해 MySQL 캐시를 지워줘야 한다. FLUSH PRIVILEGES https://stackoverflow.com/questions/36463966/mysql-when-is..

카테고리 없음 2024.03.14

[MySQL] Cardinality는 항상 일정하지 않음? 인덱스를 다시 만드는 과정에서 새롭게 연산을 하며 매번 달라짐

칼럼의 중복도를 알 수 있는 Cardinality(중복도와 반비례)는 인덱스를 다시 만드는 과정에서 새롭게 연산을 하며 매번 달라진다는 사실..! 여러 칼럼을 인덱스로 생성할 때, Cardinality가 높은 -> 낮은 순으로 구성한다. https://stir.tistory.com/m/236 MYSQL INDEX 실무 활용기 우연히 INDEX를 실무에 (드디어)활용해 볼 기회가 생겨서 적어보는 글이다. INDEX에 관한 원리 및 설명은 여기를 참고. 문제의 쿼리 SELECT SQL_NO_CACHE * FROM USER WHERE add_id = '2bf-ad7c-1b24' 쿼리는 위와 같이 stir.tistory.com

언어/MySQL 2024.03.14

[sql] 속도? count(*) > count(컬럼) > count(distinct(컬럼)) (100개 이상이면 sysindexes)

java 코드를 nodejs로 바꾸면서 총결산 조회하는 api에서 12초나 걸리는 말도 안되는 일이 있었다. 여러 종류의 금액을 연산하는 것 때문인가 싶어서 인덱스를 이렇게도 해보고 저렇게도 해봤는데 여전히 12초! 이 코드 저 코드 다 주석처리 해보며 어디에 원인이 있나 찾아보니 count 부분 때문이었다. 아래의 출처 링크에서 얻은 정보는 이러하다. 1. count(*): 단순 행을 세는 역할을 한다(Mysql 내부적으로 데이터를 읽지않고 행의 갯수를 흝고 지나간다는 것) 2. count(컬럼): 행의 값을 세는 역할을 한다 (데이터를 읽는 것) 속도 : count(distinct(컬럼)) < count(컬럼) < count(*) 순서 1. 불필요한 데이터를 셀 필요없이 행의 갯수만 얻고 싶다면 * ..

카테고리 없음 2024.02.27

[MySQL] <>와 !=의 차이는? 차이가 없음! 그럼 무엇을 쓰는 것이 더 좋을까? <> 사용권장

와 != 모두 '같지 않음'을 의미하는 연산자이다. 성능상에도 차이는 없다. 하지만 를 사용하는 것을 권장한다. 1. SQL 기본 문법에서는 NOT EQUAL에 대해 를 사용하고 있고, 2. ISO 표준에 따라서도 를 사용하고 있기 때문이다. https://www.sqlshack.com/sql-not-equal-operator/ SQL Not Equal Operator introduction and examples This article explores the SQL Not Equal comparison operator () along with its usage scenarios. www.sqlshack.com

카테고리 없음 2024.02.22

[JavaScript] 심볼키는 Object.keys() 매서드로 액세스 할 수 없음 그렇다면? Object.getOwnPropertySymbols()

params.rangeDate가 Symbol을 사용하여 구현된 비교 연산자(gte: greater than or equal to, lte: less than or equal to)를 가진 객체입니다. 이러한 심볼 키는 Object.keys() 메서드로 엑세스할 수 없습니다. Object.keys()는 해당 객체의 enumerable한 속성들의 배열을 반환하는데, 심볼은 enumerable하지 않기 때문에 이러한 키들은 반환되지 않습니다. 대신에, Symbol.iterator를 사용하여 이러한 특별한 키들을 직접 접근할 수 있습니다. const rangeDateKeys = Object.getOwnPropertySymbols(params.rangeDate); if (rangeDateKeys.length !=..

카테고리 없음 2024.02.15