limit 은 SELECT 쿼리문의 마지막에 추가해서 사용하면 된다. 

 

게시판의 특정 페이지번호의 게시글 몇개 출력 시 유용하게 사용할 수 있다.

 

"SELECT * FROM 테이블이름 WHERE 조건 ... limit A"

 

또는

 

"SELECT * FROM 테이블이름 WHERE 조건 ... limit A, B"

 

식으로 사용하면 된다.

 

limit에 사용되는 값은 한개일때는 가져올 레코드 개수. 두개일 때는 시작 레코드 번호, 가져올 레코드 개수가 된다. 시작 레코드 번호는 0부터 시작한다.

 

특정 테이블에서 전체 SELECT 결과 중 순서대로 5개만 가져오기 싶다면 "SELECT ... limit 5"

 

특정 테이블에서 전체 SELECT 결과 중 11번째 레코드 부터 20개만 가져오고 싶다면 "SELECT ... limit 10, 20"

여기서 10으로 지정한 이유는 레코드 번호는 0부터 부여하기 때문이다.

 

지금까지 설명한 방법을 게시판의 페이징 처리에 응용하면 다음과 같다.

 

보통 이런식으로 게시판 하단에 하이퍼링크가 설정된다.

 

< 1 2 3 4 5 6 7 8 9 10 >

 

여기서 선택된 번호를 page_num인 특정게시판의 페이지번호이라 하자. 그리고 페이지당 출력개수를 list_size라고 하자.

 

limit에 설정되는 값은 다음과 같다.

limit_begin = (page_num - 1) * list_size;

limit_num = list_size;


출처 - http://blog.naver.com/fromyongsik?Redirect=Log&logNo=40152162974


참고 - http://binalee.tistory.com/66

===================================================================================













'DB > MySQL' 카테고리의 다른 글

mysql - 행 번호 매기기  (1) 2012.06.23
Mysql DB 복호화 (password(), md5(), crypt())  (4) 2012.05.25
MySQL 로그 파일 관리 2 - 로그 파일 남기기  (0) 2012.05.02
mysql 외래키 옵션  (0) 2012.04.06
my.cnf 설정  (0) 2012.04.05
Posted by linuxism
,


MySQL 로그파일

유닉스에서의 에러 로그 : 'hostname'.err
shell>find / -name 'hostname'.err

윈도우에서의 에러 로그 : /mysql/data/mysql.err

리눅스에서 my.cnf파일 만들기 : my-huge.cnf 나 my-medium.cnf 파일을 찾아서
/etc/ 아래에 복사
shell>cp my-medium.cnf /etc/my.cnf

윈도우에서 my.ini 파일 만들기 : /mysql/ 디렉토리 아래에 보면 my-small, my-medium, my-large, my-huge
파일이 존재하는데 이중 1개를 my.ini로 이름을 바꿔서 c:\winnt 아래에 복사.
* windows7에선 C:\ProgramData\MySQL\MySQL Server 5.5\my.ini에 있음

리눅스 my.cnf 파일에 쿼리 로그 사용하게 하기 ([mysqld] 섹션 아래에 설정)

[mysqld]
# MyISAM 로그
log-isam=/usr/local/mysql/data/myisamlog.log
# 쿼리 로그
log=/usr/local/mysql/data/mysql.log
# 수정 로그
log-update=/usr/local/mysql/data/mysql-update.log
# 바이너리 로그
log-bin=/usr/local/mysql/data/mysql-bins.log
# 슬로우 쿼리 로그
log-slow-queries=/usr/local/mysql/data/mysql-slow.log
long_query_time=5

윈도우 my.ini 파일에 쿼리 로그 사용하게 하기 ([mysqld] 섹션 아래에 설정)

[mysqld]
# MyISAM 로그
log-isam
# 쿼리 로그
log=c:/mysql/data/mysql.log
# 수정 로그
log-update=c:/mysql/data/mysql-update.log
# 바이너리 로그
log-bin=c:/mysql/data/mysql-bins.log
# 슬로우 쿼리 로그
log-slow-queries=c:/mysql/data/mysql-slow.log
long_query_time=5

*수정후 mysql 데몬 재실행.


출처 - http://cafe.naver.com/friendvirus.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=27

===================================================================================

PHP를 이용하여 웹 어플리케이션을 작성 할 때 난감한 이슈 중의 하나는 Database query를 찍어보는 것이다.

echo나 print로 로그를 찍게 되면, 화면에 직접 출력되기 때문에 만약 운영중인 웹 어플리케이션이라면 화면 가득 쏟아져 나온 쿼리를 보게 될 것이다.

syslog를 이용하여 쿼리를 시스템 로그 파일에 기록하는 방법도 있겠지만(MySql 쿼리 디버깅을 위한 방법 - syslog 참고), 보다 근본적으로 해결하는 방법이 있다면 그 방법을 써야겠다.


MySql 로그 설정으로 보다 다양하게 찍기

MySql을 설치하면 일반적으로 로그에 대한 설정은 따로 해주지 않는다. 이 때문에 로그를 syslog로 찍어야 하는 방법 밖에 없는, 또는 echo 정도로 로그를 찍어주는 것만 하고 있을지도 모른다.

MySql 설치시에 로그에 대한 설정을 자동으로 해준다면, 더할나위 없겠지만 아쉽게도 수동으로 주석을 풀어줘야 한다.

(순서)
1. /etc/my.cnf 파일을 연다.
2. 로그와 관련된 설정을 심어준다.
3. 저장 후에 MySql을 재시동 한다.

3번 항목 재시동이라는 부분이 마음에 걸리지만, 그래도 한번 적용으로 두고두고 득(得)이 된다.
설정법은 아래와 같다.

# 바이너리 로그 설정
    log-bin = bin_logs
# 쿼리 로그 설정
    log = query_logs
# 에러 로그 설정
    log-error = err_logs
# 느린 쿼리(slow query) 설정
    log-slow-queries = slow_logs
# Update 쿼리 설정
    log-update = update_logs

5가지의 로그 설정을 해 주면, 각 상황에 맞게 tail -f 파일명 을 이용하여 콘솔로 찍기만 하면 된다.
위에 설정에서 bin_logs, query_logs, err_logs, slow_logs, update_logs는 임의로 지정한 명칭이다. 상황에 맞게 적어주면 된다.

이렇게 지정된 로그의 위치는 mysql/data 폴더 안에 생성된다.
이 위치에서 보면 위에서 설정한 이름으로 파일들이 생성되었음을 확인 할 수 있다.


출처 - http://toriworks.tistory.com/entry/MySql-%EC%BF%BC%EB%A6%AC-%EB%94%94%EB%B2%84%EA%B9%85%EC%9D%84-%EC%9C%84%ED%95%9C-%EB%B0%A9%EB%B2%95-MySql-%EB%A1%9C%EA%B7%B8






'DB > MySQL' 카테고리의 다른 글

Mysql DB 복호화 (password(), md5(), crypt())  (4) 2012.05.25
mysql에서 limit 사용  (0) 2012.05.02
mysql 외래키 옵션  (0) 2012.04.06
my.cnf 설정  (0) 2012.04.05
character_set_server 설정  (0) 2012.04.05
Posted by linuxism
,


오랜만에 모사이트에 가서 글을 보다가...

 

String과 StringBuffer에 대한 논쟁이 한참 불붙은 것을 보았습니다.

 

글쓴 사람들 보니까 좀 안다는 사람들 모여서 열띤 토론을 벌이더군요.

 

 

간단히 생각하면 될 문제를 복잡하게 생각하니 배가 산으로 갑니다.

 

 

String이나 StringBuffer나 뭘쓰면 어떻습니까... 성능문제는 성능에 문제가 될때만 발생하는 겁니다.

 

물론 성능이 좋을 수록 좋겠지만... 필요이상으로 성능에 집착하는 것은 낭비입니다.

 

 

제 의견을 말씀드리겠습니다.

 

String이나 StringBuffer나 모두 문자 배열입니다.(char[])

 

 

배열의 특징을 잘아시겠지만, 한번 생성하면 크기를 늘일 수 없어서 크기를 늘이려면 새로운 배열을 만들어야 합니다.

 

String은 변경할 수 없으니 문자열 결합이 일어날때마다 항상 새로운 배열을 만들고 복사하는 과정을 거칩니다.

 

이과정은 여유있는 크기의 배열(StringBuffer)의 내용을 변경하는 것과는 큰 성능 차이가 있습니다.

 

 

하지만, 너무 여유있는 크기의 배열을 생성하면, 메모리의 낭비가 있겠죠.(StringBuffer의 단점)

 

또한 아무리 StringBuffer라고 해도 크기를 작게 잡아놓으면 String쓰는거나 별다른게 없을 수도 있습니다.

(새로운 크기의 배열을 생성하고 복사해야하므로... 그래도 String보다는 StringBuffer가 낫습니다.)

 

 

그래도... 대부부의 경우, StringBuffer를 사용하는 것이 String을 쓰는 것보다 훨씬 빠릅니다.(문자열 편집에 관한한)

 

일부 경우에서는 String이 StringBuffer보다 빠를 수는 있지만, 대부분의 경우 당연하게도 StringBuffer가 빠를 수

 

밖에 없습니다. 배열의 특징이 그렇기 때문이죠.

 

 

한가지 알아야할 것은 String에 대한 +연산을 컴파일러가 StringBuffer로 자동변환해준다는 것입니다.

 

그러니 항상 StringBuffer대신 String을 써도 별 문제 없다고 하는 사람이 있지만... 컴파일러의 자동변환에도 한계가 있습니다.

 

String에 +연산을 사용하는 모든 경우를 커버할 수는 없다는 얘기죠.

 

 

그래서... 웬만하면 문자열 결합에 String을 그냥 사용해도 된다.(컴파일러가 자동변환해서 최적화 해주니까.)

 

성능상의 문제가 되는 경우에만 StringBuffer를 이용해서 최적화한다.

 

모든 곳에 String대신 StringBuffer를 사용하면 가독성이 떨어지니까...(코드를 읽기 힘들어지니까.)

 

출처 - http://cafe.naver.com/javachobostudy





'Development > JavaEssential' 카테고리의 다른 글

java - 반복문  (0) 2012.10.03
java - 변수  (0) 2012.09.24
조건문  (0) 2012.04.19
연산자 1  (0) 2012.04.19
변수와 메서드  (0) 2012.04.18
Posted by linuxism
,