[MYSQL]InnoDB Optimize

Database 2016.08.01 09:45 Posted by 애플자라

C:\Program Files\MySQL\MySQL Server 5.5\bin>mysqlcheck -u root -p --optimize --databases dg_db_batch

Enter password: **********


mysqlcheck -u root -p --optimize --databases dg_db_batch

mysqlcheck -u root -p --optimize --databases dg_db_chart_day

mysqlcheck -u root -p --optimize --databases dg_db_chart_month

mysqlcheck -u root -p --optimize --databases dg_db_chart_week

mysqlcheck -u root -p --optimize --databases dg_db_finance

mysqlcheck -u root -p --optimize --databases dg_db_index

mysqlcheck -u root -p --optimize --databases dg_db_index_calc

mysqlcheck -u root -p --optimize --databases dg_db_intra


---------------------------------------------------------------------------------------------------------


Optimize

단편화 제거 작업(defrag operation)과 같이, optimize table 명령문을 사용하면 사용하지 않은 공간을 회수할 수 있다. MyISAM 엔진에서는 optimize 명령문은 말그대로 단편화 제거 작업만을 수행한다. 반면 InnoDB 엔진의 경우 내부적으로 ALTER TABLE문을 실행하여, MySQL 서버에 대해 테이블과 인덱스를 재생성하도록 요청한다.

http://dev.mysql.com/doc/refman/5.1/en/optimize-table.html

단일 테이블에 대해 optimize를 하려면:

mysql> OPTIMIZE TABLE {table name};

콘솔에서 데이터베이스의 전체 테이블을 optimize를 하려면:

$ mysqlcheck -u root -p --optimize --databases dbname

만약 InnoDB라면 결과에 "Table does not support optimize, doing recreate + analyze instead” 메시지가 나온다.


출처 - http://blog.syszone.co.kr/3333

 

출처 - http://crom0810.tistory.com/entry/MySQL-ibdata1-%ED%8C%8C%EC%9D%BC-%ED%81%AC%EA%B8%B0-%EC%A4%84%EC%9D%B4%EA%B8%B0

[MSSQL]MSSQL 2005 유지관리 계획 등록 오류

Database 2013.07.10 11:17 Posted by 애플자라

[GUID 에는 대시 4개를 사용하여 32개의 자릿수를 사용해야 합니다.]




# select @@version 정보


Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86) Oct 14 2005 00:33:37 Copyright (c) 1988-2005 Microsoft Corporation Developer Edition on Windows NT 6.1 (Build 7601: Service Pack 1)



# Microsoft SQL Server Management Studio 정보


Microsoft SQL Server Management Studio 9.00.1399.00
Microsoft Analysis Services 클라이언트 도구 2005.090.1399.00
Microsoft Data Access Components(MDAC) 6.1.7601.17514 (win7sp1_rtm.101119-1850)
Microsoft MSXML 3.0 6.0
Microsoft Internet Explorer 9.0.8112.16421
Microsoft .NET Framework 2.0.50727.5466
운영 체제 6.1.7601




----------------------------------------------------------------------------------------------------------------


SQL 서비스팩 4를 설치하고 난다음의 버전.



# select @@version 정보

Microsoft SQL Server 2005 - 9.00.5000.00 (Intel X86) Dec 10 2010 10:56:29 Copyright (c) 1988-2005 Microsoft Corporation Developer Edition on Windows NT 6.1 (Build 7601: Service Pack 1)



# Microsoft SQL Server Management Studio 정보

Microsoft SQL Server Management Studio 9.00.5000.00
Microsoft Analysis Services 클라이언트 도구 2005.090.5000.00
Microsoft Data Access Components(MDAC) 6.1.7601.17514 (win7sp1_rtm.101119-1850)
Microsoft MSXML 3.0 6.0
Microsoft Internet Explorer 9.0.8112.16421
Microsoft .NET Framework 2.0.50727.5466
운영 체제 6.1.7601





** 해결 **

서비스팩 4를 설치하고 난다음에는 특이사항없이 유지관리계획에 등록되며, 백업역시 잘~ 됩니다.

버전의 차이로 구동이 되지 않았던겁니다.

 

출처 - http://www.duck.pe.kr/219

[MSSQL]LPAD,RPAD,프로시저

Database 2012.03.20 11:49 Posted by 애플자라

CREATE PROCEDURE [dbo].[AP_getcustcode] AS
BEGIN
 RETURN SELECT dbo.lpad(
   ( select max(cust_code)+1 from customerinfo ), 15, '0' )

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

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO
CREATE   FUNCTION [dbo].[GetCSContactSeqNew]  ( @CustCode char(15) )
RETURNS char(3) AS 
BEGIN
declare  @id char(3)
 SELECT @id = dbo.LPAD( ISNULL(MAX(CSCON_CODE)+1,1), 3, '0') FROM CSCONTACT WHERE CUST_CODE = @CustCode
 IF @id = NULL
  BEGIN
   SELECT @id = dbo.LPAD( '1', 3, '0')
  END
 RETURN @id
END

dbo.GetCSContactSeqNew('${CUST_CODE}')

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

SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
CREATE FUNCTION [dbo].[LPAD]
   ( @sSrcValue nvarchar(20), @nSize int, @sChar nvarchar(2)) 
RETURNS nvarchar(100)  AS 
BEGIN
RETURN (ISNULL( REPLICATE(@sChar, @nSize-len(@sSrcValue))+@sSrcValue, substring(@sSrcValue,len(@sSrcValue)-@nSize+1,len(@sSrcValue) )   ))
END

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

SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
CREATE FUNCTION [dbo].[RPAD]
   ( @sSrcValue nvarchar(20), @nSize int, @sChar nvarchar(2)) 
RETURNS nvarchar(100)  AS 
BEGIN
RETURN (@sSrcValue+REPLICATE(@sChar, @nSize-len(@sSrcValue)))
END

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


[MSSQL]insert row 스크립트 생성 SP

Database 2012.03.07 13:06 Posted by 애플자라

ms-sql에서 사용됨


-- 전체 테이블의 insert 스크립트 생성
exec sp_msforeachtable 'exec sp_geninsertstmt N''?''';

-- 해당 테이블만 추출
exec sp_geninsertstmt N'테이블명'

-- 해당 테이블의 where 절 만
exec sp_geninsertstmt N'테이블명', N'where idx>10000';

[MS SQL] Lock 해결

Database 2011.03.16 09:59 Posted by 애플자라

Lock을 찾기 위해서 sp_lock 프로시져를 실행 후, Lock Mode 가 "X" 을 것을 찾는다.
(일반적으로 "S" 또는 "IS" 많이 일어나지만, 운영 상에는 큰 이슈는 되지 않는다. )

그래서 sp_lock으로 조회되는 세션 중 Lock Mode 가 "X"인 것의 SPID 값을 가지고 와서,
예를 들면 SPID 값이 "56"일 경우,

dbcc inputbuffer(56);
위와 같은 명령어를 실행해서 보면, EventInfo 컬럼에 어떤 SQL 문이 Lock 을 일으키고 있는지 확인할 수 있다.

출처 - http://jmkjb.tistory.com/entry/MSSQLUnLock

'Database' 카테고리의 다른 글

[MSSQL]CASE WHEN THEN  (0) 2012.01.08
Toad Excel Export시 한글깨짐  (0) 2011.10.04
[MS SQL] Lock 해결  (0) 2011.03.16
[MSSQL]CHARINDEX,LEFT  (0) 2011.02.18
[MSSQL]CONVERT, DATEADD, GETDATE, DAATEPART 이용해서 날짜구하기  (1) 2011.01.25
[ORACLE]개행문자(\r\n) 제거하기  (0) 2011.01.25

SELECT GETDATE(); --오늘날짜

SELECT CONVERT(CHAR(8), DATEADD(dd,-1,GETDATE()),112); --어제날짜

SELECT CONVERT(CHAR(8), DATEADD(dd,+1,GETDATE()),112); --내일날짜

SELECT CONVERT(CHAR(8), DATEADD(mm,+3, GETDATE()),112); -- 3달후날짜

SELECT CONVERT(CHAR(8), DATEADD(yy,+1, GETDATE()),112); -- 1년후오늘날짜

SELECT CONVERT(CHAR(8), DATEADD(mm, -1, GETDATE()-DAY(GETDATE()-1)),112); --지난달1

SELECT CONVERT(CHAR(8), DATEADD(mm, 0, GETDATE()-DAY(GETDATE())),112); --지난달말일

SELECT CONVERT(CHAR(8), DATEADD(dd, 0, GETDATE()-DAY(GETDATE()-1)),112); --이번달1

SELECT CONVERT(CHAR(8), DATEADD(mm, +1, GETDATE()-DAY(GETDATE())),112); --이번달말일

SELECT CONVERT(CHAR(8), DATEADD(MM, +1, GETDATE()-DAY(GETDATE()-1)),112); --다음달1

SELECT CONVERT(CHAR(8), DATEADD(MM, +2, GETDATE()-DAY(GETDATE())),112); --다음달말일

SELECT CONVERT(CHAR(8), DATEADD(MM, -2, GETDATE()-DAY(GETDATE()-1)),112); -- 2달전1

SELECT CONVERT(CHAR(8), DATEADD(MM, -1, GETDATE()-DAY(GETDATE())),112); --2달전말일

SELECT CONVERT(CHAR(8), DATEADD(YY, 0, GETDATE()-DATEPART(DAYOFYEAR, GETDATE()-1)),112); --올해11

SELECT CONVERT(CHAR(8), DATEADD(YY, +1, GETDATE()-DATEPART(DAYOFYEAR, GETDATE())),112); --올해12월말일

SELECT CONVERT(CHAR(8), DATEADD(YY, +1, GETDATE()-DATEPART(DAYOFYEAR, GETDATE()-1)),112); --내년11

SELECT CONVERT(CHAR(8), DATEADD(YY, +2, GETDATE()-DATEPART(DAYOFYEAR, GETDATE())),112); --내년12월말일

SELECT DATEPART(DAYOFYEAR,'2010-07-20'); -- 2010-01-01 ~ 2010-07-02의날수

SELECT DATEPART(WEEK, '2010-07-20');

SELECT DATEPART(WEEKDAY, '2010-07-20');

 

DECLARE @WEEK_DAY DATETIME;

SET @WEEK_DAY = '2010-08-15';

SELECT

CASE DATEPART(WEEKDAY, @WEEK_DAY) WHEN '1' THEN '일요일'

  WHEN '2' THEN '월요일'

  WHEN '3' THEN '화요일'

  WHEN '4' THEN '수요일'

  WHEN '5' THEN '목요일'

  WHEN '6' THEN '금요일'

  ELSE '토요일'

END AS '요일';

 

SELECT DATEPART(DAYOFYEAR, '2010-08-15');

SELECT DATEPART(WEEK, '2010-08-15');

 

 

DECLARE @_date CHAR(8);

SET @_date = REPLACE('2010-07-20','-','');

SELECT SUBSTRING(@_date,1,4) + '' + substring(@_date,5,2) +'' + substring(@_date,7,2) + '일입니다'

,CONVERT(VARCHAR, DATEPART(WEEK, @_date))+'번째주입니다'

,CONVERT(VARCHAR, DATEPART(dayofyear, @_date))+'번째날짜입니다.';

 

 

DECLARE @_date DATETIME;

SET @_date = CONVERT(CHAR(8), REPLACE('2010-07-20','-',''),112);

SELECT CONVERT(CHAR(4),DATEPART(YEAR,@_date)) + '' ,CONVERT(CHAR(2),DATEPART(MONTH,@_date))+'', CONVERT(CHAR(2),DATEPART(DAY,@_date))+'';

SELECT CONVERT(VARCHAR, DATEPART(WEEK, @_date))+'번째주입니다'

,CONVERT(VARCHAR, DATEPART(dayofyear, @_date))+'번째날짜입니다.';

참조 - http://dramatic.tistory.com/13

[MSSQL] 테이블 소유자 변경하기

Database 2010.10.27 21:16 Posted by 애플자라

 
/*전체 테이블의 소유자 변경*/
SP_MSFOREACHTABLE 'sp_changeobjectowner ''?'' , ''dbo'''

/*단일 테이블의 소유자 변경*/
EXEC sp_changeobjectowner 'LECTURE_PRE_FILE', 'dbo'

[MSSQL] MSSQL2000 DB백업본 복구하기

Database 2010.10.09 13:50 Posted by 애플자라


RESTORE FILELISTONLY
    FROM DISK = 'D:\ems_monitor_backup_20070226'

RESTORE DATABASE ems_monitor
    FROM DISK = 'D:\ems_monitor_backup_20070226'
    WITH MOVE 'ems_monitor_Data_01' TO 'D:\MSSQL\ems_monitor_Data_01_Data.NDF',
    MOVE 'ems_monitor_Log_01' TO 'D:\MSSQL\ems_monitor_Log_01_Log.LDF',
    stats = 10

exec sp_helpdb ems_monitor

exec sp_dbcmptlevel 'ems_monitor', '90'

DBCC SHRINKDATABASE (ems_monitor)
GO

[MSSQL]이메일 유효성 체크 쿼리

Database 2010.10.07 15:39 Posted by 애플자라

-- Before

SELECT COUNT(1) FROM EMS_AUTO_SCHEDULE_INFO A, EMS_AUTO_SEND_LIST_01 B
WHERE A.WORKDAY = B.WORKDAY AND A.SEQNO = B.SEQNO
AND A.WORKDAY = CONVERT(VARCHAR(8),GETDATE(),112)
AND A.SEND_FLAG = '05' AND A.REQ_DATE < GETDATE()
AND DATEADD(MI,+30,B.REG_DATE) <= GETDATE()
AND B.SEND_TIME IS NULL
AND B.TO_EMAIL IS NOT NULL
AND B.TO_EMAIL <> ''

-- After(이메일 형식 X)

SELECT COUNT(1) FROM EMS_AUTO_SCHEDULE_INFO A, EMS_AUTO_SEND_LIST_01 B
WHERE A.WORKDAY = B.WORKDAY AND A.SEQNO = B.SEQNO
AND A.WORKDAY = CONVERT(VARCHAR(8),GETDATE(),112)
AND A.SEND_FLAG = '05' AND A.REQ_DATE < GETDATE()
AND DATEADD(MI,+30,B.REG_DATE) <= GETDATE()
AND B.SEND_TIME IS NULL
AND B.TO_EMAIL IS NOT NULL
AND B.TO_EMAIL <> ''
AND NOT
(CHARINDEX(' ',LTRIM(RTRIM(B.TO_EMAIL))) = 0
AND LEFT(LTRIM(B.TO_EMAIL),1) <> '@'
AND RIGHT(RTRIM(B.TO_EMAIL),1) <> '.'
AND CHARINDEX('.',B.TO_EMAIL,CHARINDEX('@',B.TO_EMAIL)) - CHARINDEX('@',B.TO_EMAIL) > 1
AND LEN(LTRIM(RTRIM(B.TO_EMAIL))) - LEN(REPLACE(LTRIM(RTRIM(B.TO_EMAIL)),'@','')) = 1
AND CHARINDEX('.',REVERSE(LTRIM(RTRIM(B.TO_EMAIL)))) >= 3
AND    (CHARINDEX('.@',B.TO_EMAIL) = 0 AND CHARINDEX('..',B.TO_EMAIL) = 0)
)

-- After(이메일 형식 O)

SELECT COUNT(1) FROM EMS_AUTO_SCHEDULE_INFO A, EMS_AUTO_SEND_LIST_01 B
WHERE A.WORKDAY = B.WORKDAY AND A.SEQNO = B.SEQNO
AND A.WORKDAY = CONVERT(VARCHAR(8),GETDATE(),112)
AND A.SEND_FLAG = '05' AND A.REQ_DATE < GETDATE()
AND DATEADD(MI,+30,B.REG_DATE) <= GETDATE()
AND B.SEND_TIME IS NULL
AND B.TO_EMAIL IS NOT NULL
AND B.TO_EMAIL <> ''
AND
(CHARINDEX(' ',LTRIM(RTRIM(B.TO_EMAIL))) = 0
AND LEFT(LTRIM(B.TO_EMAIL),1) <> '@'
AND RIGHT(RTRIM(B.TO_EMAIL),1) <> '.'
AND CHARINDEX('.',B.TO_EMAIL,CHARINDEX('@',B.TO_EMAIL)) - CHARINDEX('@',B.TO_EMAIL) > 1
AND LEN(LTRIM(RTRIM(B.TO_EMAIL))) - LEN(REPLACE(LTRIM(RTRIM(B.TO_EMAIL)),'@','')) = 1
AND CHARINDEX('.',REVERSE(LTRIM(RTRIM(B.TO_EMAIL)))) >= 3
AND    (CHARINDEX('.@',B.TO_EMAIL) = 0 AND CHARINDEX('..',B.TO_EMAIL) = 0)
)

'Database' 카테고리의 다른 글

[MSSQL] 테이블 소유자 변경하기  (0) 2010.10.27
[MSSQL] MSSQL2000 DB백업본 복구하기  (0) 2010.10.09
[MSSQL]이메일 유효성 체크 쿼리  (0) 2010.10.07
[MSSQL] 날짜 변환 관련  (0) 2010.09.24
[MSSQL] 관리를 위한 쿼리들  (0) 2010.09.24
[ORACLE]OUTER JOIN  (0) 2010.08.26

[MSSQL] 날짜 변환 관련

Database 2010.09.24 14:56 Posted by 애플자라
CONVERT( target_type, expression, date_style smallint ) RETURNS <data type>
사용법 date_style 결과 값
CONVERT(NVARCHAR(20), GETDATE(), 100) 100 Sep  2 2010  1:35PM
CONVERT(NVARCHAR(20), GETDATE(), 101) 101 09/02/2010
CONVERT(NVARCHAR(20), GETDATE(), 102) 102 2010.09.02
CONVERT(NVARCHAR(20), GETDATE(), 103) 103 02/09/2010
CONVERT(NVARCHAR(20), GETDATE(), 104) 104 02.09.2010
CONVERT(NVARCHAR(20), GETDATE(), 105) 105 02-09-2010
CONVERT(NVARCHAR(20), GETDATE(), 106) 106 02-Sep-10
CONVERT(NVARCHAR(20), GETDATE(), 107) 107 02-Sep-10
CONVERT(NVARCHAR(20), GETDATE(), 108) 108 13:35:31
CONVERT(NVARCHAR(20), GETDATE(), 109) 109 Sep  2 2010  1:35:31
CONVERT(NVARCHAR(20), GETDATE(), 110) 110 09-02-2010
CONVERT(NVARCHAR(20), GETDATE(), 111) 111 2010-09-02
CONVERT(NVARCHAR(20), GETDATE(), 112) 112 20100902
CONVERT(NVARCHAR(20), GETDATE(), 113) 113 2010-09-02 13:35
CONVERT(NVARCHAR(20), GETDATE(), 114) 114 13:35:31:510
CONVERT(NVARCHAR(20), GETDATE(), 120) 120 2010-09-02 14:02
CONVERT(NVARCHAR(20), GETDATE(), 121) 121 2010-09-02 14:02
CONVERT(NVARCHAR(20), GETDATE(), 126) 126 2010-09-02T14:02:50.

date_type 에 100을 빼면 세기를 포함안하고 표시를 한다고 합니다. 2010-09-02 --> 10-09-02

참조 - http://blog.vicki.co.kr/1020

'Database' 카테고리의 다른 글

[MSSQL] MSSQL2000 DB백업본 복구하기  (0) 2010.10.09
[MSSQL]이메일 유효성 체크 쿼리  (0) 2010.10.07
[MSSQL] 날짜 변환 관련  (0) 2010.09.24
[MSSQL] 관리를 위한 쿼리들  (0) 2010.09.24
[ORACLE]OUTER JOIN  (0) 2010.08.26
IBM DB2에서 select and update,delete 하기  (0) 2010.07.19