본문 바로가기

프로그래밍/MySQL

(5)
[MySQL] Where In & SubQuery 는 최악! JOIN & MAX & GROUP BY 사용 최근에 구축 중인 사이트가 있는데, 방대한 양의 시세 정보 데이터를 적재하고 이를 검색서비스를 제공하는 사이트이다. 여러 다른서버들이 있어 다른서버의 시세도 한눈에 보게끔 해주고 싶었는데, 아무 생각 없이 where 에 in 으로 서브 쿼리를 넣어 주는걸로 작성을 해주었더니, 시간이 매우 오래 걸렸다. SELECT * FROM auction WHERE idx IN ( SELECT MAX(idx) FROM auction WHERE item_id = :item_id GROUP BY realm_id, auction_house_id, item_id) ORDER BY price_min DESC; 위 쿼리의 결과가 도출되는데 4초에서 6초가 소요되었다. 개선을 해볼수 있지 않을까 싶어 여러 검색을 해보았는데, wh..
MySQL 기본적인 모니터링 방법과 Connection과 Memory 튜닝 방법 MySQL Database의 경우 Oracle 이나 MS SQL Server에 비해서 대용량의 자료를 처리하는 경우가 적기에 튜닝에 필요성이 적은 것 같습니다. 그러나 웹이라는 환경은 많은 사용자가 동시에 접속을 할 수 있기에 항상 모니터링과 최적화는 기본이라고 생각합니다. 본 강좌에서는 기본적인 모니터링 방법과 Connection과 Memory 부분에 대한 튜닝 방법을 소개하도록 하겠습니다. 가. 모니터링 및 초기화 명령어 show status - MySQL 데이타베이스의 현재 상황 show Processlist - MySQL 프로세스 목록 show variables - 설정 가능한 모든 변수 목록 flush logs - MySQL의 로그파일 초기화 flush status - MySQL 상태정보 초기화..
Running a syntax check on /etc/my.cnf Usually, I update variables on the fly using something like: mysql> SET GLOBAL max_connections = 150; … and then modify /etc/my.cnf to make the change persistent. The problem in doing this is that you’re not verifying that your /etc/my.cnf is correct and can only hope that a restart doesn’t encounter any problems. Fortunately, Sai emailed us a great little tip to verify the syntax. You can run t..
mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead [duplicate] Simply put, you need to rewrite all of your database connections and queries. You are using mysql_* functions which are now deprecated and will be removed from PHP in the future. So you need to start using MySQLi or PDO instead, just as the error notice warned you. A basic example of using PDO (without error handling):
MYSQL에서 랜덤으로 데이터 읽어오기 예) select * from table_name order by rand() limit 10 ; 위에서 table_name 에는 자신이 랜덤으로 데이터를 뽑을 테이블의 이름이며 10은 자신이 랜덤으로 몇개의 데이터를 뽑을것인지 쓰는 곳이다. 예를들어 자신이 aaa라는 테이블에서 7개의 임의의 데이터를 읽어오려면 select * from aaa order by rand() limit 7 ; 라고 쓰면 된다.