• 티스토리 홈
  • 프로필사진
    31514
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
31514
  • 프로필사진
    31514
    • 분류 전체보기 (109)
      • Book (66)
        • Learning SQL (9)
        • SQL 레벨업 (8)
        • 견고한 데이터 엔지니어링 (5)
        • 운영체제 (2)
        • 스파크 완벽 가이드 (9)
        • 파이썬 코딩의 기술 (29)
        • 분산 컴퓨팅 (4)
      • 개발 (25)
      • 기타 (10)
        • 출퇴근 공부 간단 정리 (7)
      • ELK (6)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
      • 31514의 이전 블로그는 여기로!
      등록된 공지가 없습니다.
    # Home
    # 공지사항
    #
    # 태그
    # 검색결과
    # 방명록
    • 포스트글 썸네일 이미지
      5장 - 반복문
      31514:
      반복문 의존증SQL은 반복문을 만들지 못한 것이 아니라, 필요하지 않아서 만들지 않은 것이다.호스트 언어(Python, JAVA 등)에서 하나의 레코드마다 작은 SQL을 사용해 접근하는 건 반복계 코드라고 한다.반복계 코드의 가장 좋은 점은 SQL을 잘 모르더라도 사용할 수 있다는 것이다.하지만 같은 기능을 구현한다고 가정하면, 반복계로 구현한 코드는 포장계로 구현한 코드에 성능적으로 이길 수 없다.반복계의 공포 3가지SQL을 실행할 때는 다음과 같은 과정을 거친다.SQL 구문을 네트워크로 전송데이터베이스 연결SQL 구문 파스SQL 구문의 실행 계획 생성 또는 평가결과 집합을 네트워크로 전송1번과 5번은 SQL을 실행하는 애플리케이션과 데이터베이스가 물리적으로 같은 위치에 있다면 발생하지 않을 것이다.2..
      • 2024-09-23 13:19:37
    • 포스트글 썸네일 이미지
      12장 - 트랜잭션
      31514:
      잠금은 데이터베이스 서버가 데이터 자원의 동시 사용을 제어하는 데 사용되는 메커니즘이다.대부분의 데이터베이스 서버는 다음 두 가지 방법의 잠금 방식을 사용한다.데이터를 수정할 때 쓰기 잠금을 서버에 요청하고 수신하며, 쓰기 잠금이 해제될 때까지는 읽기 요청이 차단된다.다중 버전 동시성 제어(MVCC) : 스냅샷을 활용하여 어떤 읽기/쓰기 요청을 차단하지 않고 일관된 데이터 버전을 사용한다트랜잭션은 여러 SQL 문을 함께 그룹화해서 모든 구문이 성공하거나 성공하지 않도록 하는 장치다.SET AUTOCOMMIT=0MySQL에서 자동 커밋 모드를 해제할 수 있다.commit 또는 rollback 명령어를 실행했을 때뿐만 아니라 다른 작업으로 인해 트랜잭션이 종료될 수 있다.서버가 종료되고 서버가 재시작되면 자..
      • 2024-09-23 12:07:34
    • 포스트글 썸네일 이미지
      1장 - 서론
      31514:
      운영체제를 공부하는 이유거의 모든 코드가 운영체제 위에서 실행되므로 운영체제 작동방식에 대한 지식은 적절하고 효율적이며, 효과적이고 안전한 프로그래밍에 중요하기 때문이다.운영체제가 할 일운영체제는 단순히 다른 프로그램이 유용한 작업을 할 수 있는 환경을 제공한다.운영체제는 컴퓨터 시스템을 효율적이고 공정하게 운영할 수 있도록 어느 요청에 자원을 할당할지를 결정해야 한다.운영체제는 제어 프로그램이기 때문에 컴퓨터의 부적절한 사용을 방지하기 위해 사용자 프로그램의 수행을 제어한다.컴퓨터 시스템의 구성하드웨어는 어느 순간이든 시스템 버스를 통해 CPU에 신호를 보내 인터럽트를 발생시킬 수 있다.인터럽트는 다른 많은 목적으로도 사용되며 운영체제와 하드웨어의 상호 작용 방식의 핵심 부분이다.인터럽트는 최신 운영체..
      • 2024-09-22 00:30:26
    • 포스트글 썸네일 이미지
      4장 - 집약과 자르기
      31514:
      GROUP BY 구를 사용했을 때 SELECT 구에 입력할 수 있는 건 상수, 집약키, 집약 함수 뿐이다.집약을 사용하면 내부적으로 정렬 또는 해시 알고리즘을 사용하는데, 최근에는 대부분 해시를 사용하는 경우가 많다.예를 들어 GROUP BY 구에 지정되어 있는 필드를 해시 함수를 사용해서 해시키로 변환하고, 같은 해시키를 가진 그룹을 모아 집약하는 방식이다.특히 해시의 성질상 GROUP BY의 유일성이 높으면 더 효율적으로 작동한다.GROUP BY 성능정렬과 해시 모두 메모리를 많은 사용하므로, 충분한 워킹 메모리가 확보되지 않으면 스왑이 발생한다.스왑이 발생하면 저장소 위의 파일이 사용되면서 굉장히 느려진다.따라서 연산 대상 레코드 수가 많은 GROUP BY 구를 사용할 때 충분한 성능 검증을 해줘야..
      • 2024-09-20 13:37:22
    • 포스트글 썸네일 이미지
      9장 - 서브쿼리
      31514:
      SQL 구문이 실행을 완료한 후 데이터베이스 서버가 서브쿼리 결과에 할당된 메모리를 해제한다.비상관 서브쿼리 - 독립적으로 실행되는 서브쿼리select city_id, cityfrom citywhere country_id (select country_id from country where country = 'India');상관 서브쿼리 - 하나 이상의 열을 참조하는 포함 구문에 의존적인 서브쿼리따라서 포함 구문이 실행되기 전까지 실행되지 않는다.select c.first_name, c.last_namefrom customer cwhere 20 = (select count(*) from rental r where r.customer_id = c.customer_id);주의할 점은 포함 쿼리의 각 ..
      • 2024-09-20 13:15:59
    • 포스트글 썸네일 이미지
      8장 - 그룹화와 집계
      31514:
      count(*)는 테이블의 전체 행을 반환하고, count(컬럼명)은 null 값을 제외하고 컬럼에 저장된 값의 수를 반환한다.WITH ROLLUPselect 컬럼명1, 컬럼명2, count(*)from tablegroup by 컬럼명1, 컬럼명2 with rollup전체 행의 개수와, (컬럼명1, 컬럼명2)로 묶인 그룹의 개수도 반환된다.GROUP BY 절을 포함하는 쿼리에 필터를 추가할 때, WHERE 절에 써서 원시 데이터에 대해 동작하도록 할지 아니면 HAVING 절에 써서 그룹화된 데이터에 대해 동작하도록 할지는 신중하게 고려해야 한다.
      • 2024-09-19 16:44:30
    • 포스트글 썸네일 이미지
      3장 - SQL의 조건 분기
      31514:
      SQL은 조건 분기를 할 때, CASE 식을 사용하지만 UNION을 사용하는 경우도 있다.하지만 UNION을 사용하면 내부적으로 여러 개의 SELECT 구문을 실행하는 실행 계획으로 해석되기 때문에 테이블에 접근하는 횟수가 많아져서 I/O 비용이 증가한다. UNION 조건 분기의 문제점-- UNION을 사용한 조건 분기 쿼리(예시)select item_name, year, price_tax_ex as price from items where year = 2002;좋지 않은 가독성TABLE FULL ACCESS로 2번 접근 -> 성능 감소해결 방법SELECT item_name, year, CASE WHEN year = 2002 THEN price_tax_in END AS price FROM item..
      • 2024-09-19 15:08:13
    • 쿼리가 무한 루프에 빠지는 문제
      31514:
      상황 및 문제나는 다음과 같은 파이썬 코드로 MySQL 테이블을 생성했다.import mysql.connector# MySQL 연결 설정mydb = mysql.connector.connect( host=*****, user=*****, password=*****, database=*****)# 커서 생성mycursor = mydb.cursor()# 테이블 생성mycursor.execute("""CREATE TABLE IF NOT EXISTS table ( ...)""") 하지만 특정 필드의 이름에 오타가 있다는 사실을 알게 되어 MySQL 서버에 접속하여 DROP TABLE 쿼리문을 실행했지만 무한 루프에 빠지게 되었다. 원인MySQL 커넥터는 트랜잭션 기반으로 동작한다. 만약..
      • 2024-09-19 14:10:32
    조회된 결과가 없습니다.
    [1][···][10][11][12][13][14]
    스킨 업데이트 안내
    현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
    ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
    목차
    표시할 목차가 없습니다.
      • 안녕하세요
      • 감사해요
      • 잘있어요

      티스토리툴바