전체 글 84

온라인 세그먼트 축소

1. SHRINK 작업의 정의 - SEGMENT에 할당된 EXTENT를 TABLESPACE로 반환하는 작업 - SHRINK 작업으로 SEGMENT의 용량은 줄어들고, TABLESPACE의 용량은 줄어들지 않음(TABLESPACE의 용량은 축소시키기 위해서는 RESIZE 작업이 필요함) - 장점: INSERT,DELETE를 통해 데이터를 이동하기 때문에 추가적인 공간이 필요하지 않음 - 단점: 일부 데이터만 이동하기 때문에 Row Migration이나 Chaining이 전체적으로 해결되지 않음 2. SHRINK 작업 방법 (출처: http://www.slideshare.net/ashilo/getting-to-know-oracle-database-objects-iot-mviews-clusters-and-mo..

Oracle/Admin 2016.07.28

업종 별 종가 합계 구하기

[테스트 환경] OS : CentOS 7 DB : MariaDB 10.1.12 Programming : Python 3.5 1. 함수 작성 - 업종 마스터 테이블에서 업종 코드를 불러와서 해당 업종 코드에 속하는 종목의 종가 합계 구하기 import pp from datetime import datetime import sys, socket, pymysql IpAddr = socket.gethostbyname(socket.gethostname()) conn = pymysql.connect(host=IpAddr, port=3306, user='root', passwd='root', db='STOCK',charset='utf8',autocommit=True) cur = conn.cursor() def sum..

Programming 2016.04.24

[Python]주식 종목 데이터 및 일별 시세 데이터 DB적재

1. 파이썬을 활용한 테이블 적재 방법 - 파이썬을 이용하여 한국증권 거래소에서 제공하는 주식 종목 데이터(CSV)를 테이블에 적재하는 로직을 구현 import csv import pymysql import socket #한국증권거래소에서 제공받은 csv파일을 읽어옴 stock_code = open('/root/data.csv', 'r') #배열에 넣는다. csvReader = csv.reader(stock_code) #데이터 베이스를 연결 IpAddr = socket.gethostbyname(socket.gethostname()) conn = pymysql.connect(host=IpAddr, port=3306, user='root', passwd='root',charset='utf8',autocomm..

Programming 2016.04.22

Python Parallel로 DB 데이터 읽어오기

테스트 환경 : CentOS 7 / MariaDB 10.1.12 / Python 3.5 테스트 전 test 테이블에 1926144건에 해당하는 데이터를 입력했다. 테스트1 – 전체 데이터 읽기 import pymysql import sys import pp def fet(n): conn = pymysql.connect(host='192.168.219.153', port=3306, user='root', passwd='root', db='test',charset='utf8',autocommit=True) cur = conn.cursor() sql = "select * from test” #sql += n return cur.execute(sql) ppservers = () if len(sys.argv) >..

Programming 2016.04.18

Python Parallel 예제 소스 분석

테스트 환경 : CentOS 7 / MariaDB 10.1.12 / Python 3.5 Python Parallel설치 폴더에 포함된 examples 폴더에 예제 소스가 있다. 그 중에 특정 input 이하의 값 중 소수인 값의 합을 구하는 예제인 sum_primes.py를 분석한다. def isprime(n): """Returns True if n is prime and False otherwise""" if not isinstance(n, int): raise TypeError("argument passed to is_prime is not of 'int' type") if n < 2: return False if n == 2: return True max = int(math.ceil(math.sqr..

Programming 2016.04.17

Python Parallel 설치하기

테스트 환경 : CentOS 7 / MariaDB 10.1.12 / Python 3.5 Virtual Box 이미지의 프로세서 개수를 늘려준다. 설정 > 시스템 > 프로세서 > 프로세서 개수 로컬 프로세스의 개수와 상관없이 이미지의 cpu개수를 설정할 수 있다. Python Parallel 다운로드 pp-1.6.4.4.zip 파일 다운로드 및 압축 해제 후 서버로 파일을 이동한다. (다운로드 경로 : http://www.parallelpython.com/content/view/18/32/) Python Parallel 설치 [python@localhost /home/python]$ cd /home/python/pp-1.6.4.4 [python@localhost /home/python/pp-1.6.4.4]..

Programming 2016.04.17

종목의 데이터 추출하기

테스트 환경 : CentOS 7 / MariaDB 10.1.12 / Python 3.5종목의 현재가, 시가총액, 상장주식수, 거래량 추출 한 종목에 대한 전체 데이터는 로 묶여있으며 배열 형태로 변수에 저장 srlists=source.find_all('tr') 종목의 세부 데이터는 로 묶여있음 세부 데이터 중 필요한 데이터는 현재가, 시가총액, 상장주식수, 거래량이므로 해당 데이터만 추출 srlists[i].find_all("td",class_="number")[0].text srlists[i].find_all("td",class_="number")[4].text srlists[i].find_all("td",class_="number")[5].text srlists[i].find_all("td",clas..

Programming 2016.04.14

BeautifulSoup4를 이용한 웹페이지 데이터 가져오기[정리필요]

테스트 환경 : CentOS 7 / MariaDB 10.1.12 / Python 3.5 1. BeautifulSoup - BeautifulSoup를 이용하면 웹에서 사용하는 html 소스를 가져와서 필요한 데이터를 파싱하여 사용할 수 있다. (Python 3.5 환경에서는 Beatifulsoup4를 사용해야 하며 낮은 버전을 다운받을 경우 에러가 발생한다.) [python@localhost ~]$ pip3.5 install BeautifulSoup4 Collecting BeautifulSoup Downloading BeautifulSoup-3.2.1.tar.gz - 웹페이지 html 소스를 파일로 저장할 수 있다. - BeautifulSoup을 이용해서 원하는 데이터를 파싱 후 데이터베이스에 저장(htm..

Programming 2016.04.13

[데이터 모델링] 정규화란?

1.정규화란 무엇인가? 우리가 정규화를 하는 궁극적인 목적은 데이터의 중복을 제거하고 속성들이 본래의 제자리에 위치시키자는 것. 2. 제1 정규형 - 모든 속성은 반드시 하나의 값을 가져야 한다. 유사한 형태 반복 속성이 있어서는 안된다. 제1 정규형에 위배되면 해당 속성은 하위 엔티티로 분리해야 하며, 이 엔티티는 현재의 엔터티에서 분리된 것이 분명하기 때문에 식별자를 상속받아 자신의 식별자가 된다. 단, 추후 새롭게 인조 식별자(Surrogate Key)를 만들겠다면 부모의 식별자가 자신의 식별자에서 빠질 수는 있지만 그렇다고 해서 부자 간의 관계가 없어지는 것은 결코 아니다. 3. 제2 정규형 - 모든 속성은 반드시 식별자 전체에 종속적이어야 한다. 엔티티의 식별자가 자신의 속성만 갖고 위배되는 속..

Modeling 2016.03.24

[오라클 성능 고도화 원리와 해법 1] 데이터베이스 Call 최소화 원리

Parse Call을 제외하고 SQL 수행 중에 발생하는 Execute Call, Fetch Call을 줄이는 방법에 대해 설명하고, 데이터베이스 Call을 User Call과 Recursive Call로 나누어 각각을 최소화하는 원리와 방안에 대해서 설명 합니다. Call 통계select * from emp; call count cpu elapsed disk query current rows ------- ------ -------- ---------- ---------- ---------- ---------- ---------- Parse 1 0.01 0.03 0 0 0 0 Execute 1 0.00 0.01 0 0 0 0 Fetch 2 0.00 0.00 0 8 0 14 ------- ------ -..

Oracle/SQL Tuning 2015.12.03