[SQL] 시간대별 가장 최근 데이터 조회 쿼리 MariaDB를 기준으로 작성되었습니다. 내가 원한 데이터는 다음과 같다. 11 서비스 1 데이터 1 11 서비스 2 데이터 2 11 서비스 3 데이터 3 12 서비스 1 데이터 1 12 서비스 2 데이터 2 12 서비스 3 데이터 3 이렇게 시간대별로 서비스의 데이터를 조회하고 싶었다. 해당 테이블은 log성으로 5분마다 데이터가 적재된다. 그러니까 각 시간대별 가장 최근 데이터를 뽑아야 한다. 그래서 쿼리는 다음과 같다. SELECT TIME, SERVICE_NAME, IFNULL(CPU_USAGE,0) AS CPU_USAGE, IFNULL(MEMORY_TOTAL,0) AS MEMORY_TOTAL, IFNULL(MEMORY_USAGE,0) AS MEMORY_USAGE FROM ( SELECT @N :..
썸네일 Host '192.xxx.xx.xx' is not allowed to connect to this MariaDB server - Maria DB 원격접속 불가 maria DB서버를 외부에서 접근하려고 하는데 다음과 같은 에러가 발생했다. 보안상 root 계정에 아무나 접근 할 수 없어서 허용할 IP를 지정해줘야 한다. 1. DB 접속 1. mysql 접속 mysql -u root -p 2. 비밀번호 입력 2. 현재 설정 확인 select Host,User,plugin,authentication_string FROM mysql.user; 3. 모든 IP 허용 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '패스워드'; 4. 재확인 5. DB 접속 툴로 연결 root@% 이렇게 되어 있어야 외부에서도 접근 가능함 Ref. https://java119.tistory.com/61 [MySQL || MariaDB] ..
썸네일 [DB] 인덱스를 걸 때 원칙 인덱스를 걸 때 원칙 Unique 변화량이 많은 것이 기준이다.예를 들어 상담 예약 시간이 인덱스를 걸기 좋은 컬럼이다. 하나의 행안에 컬럼들이 있는데 안에 들어가는 **데이터가 계속 달라지는 것** = 인덱스를 걸 후보가 된다. 💡 인덱스가 걸린 순서대로 where절을 구성해야한다. 따라서, 데이터 분포도가 다양한 것 위주로 쿼리를 짜야한다. where절 조건으로 검색할 때 인덱스가 걸려있을 경우 (=≠)이라면 인덱스를 타지 않는다. 왼쪽을 변경 시키면 인덱스를 안탄다. 오른쪽은 변경해도 됨
썸네일 [DB] IN을 사용할 때 전제조건 IN을 사용할 때 전제조건 데이터가 100건 미만인 테이블에서만 사용할 것 ! IN 연산자는 성능이 나쁘기 때문에, join으로 검색해야함. IN은 많은 데이터에서 적은 데이터로 찾는 것 join은 적은 데이터에서 많은 데이터를 찾을 때 데이터 양이 작다면 IN을 사용해도 된다. 💡 데이터가 많은 테이블에서는 IN을 남발해서는 절대 안됨 ! ⇒ DB 뻗는다.