OS&DB/Mysql 2013. 3. 12. 23:00

테이블 락

출처1: 기억안남;;;

출처2: http://ksh6438.blog.me/20163186813

 

insert 하는 시간은 다음와 같이 구성된다:

Connect: (3)
Sending query to server: (2)
Parsing query: (2)
Inserting record: (1 x size of record)
Inserting indexes: (1 x indexes)
Close: (1)

(숫자)는 비례적인 시간이다. 이것은 테이블을 개방할때 초기의 overhead를 고려하고 있지
는 않다. (매 동시병행적으로 수행되는 질의마다 발생)

The size of the table slows down the insertion of indexes by N log N (B-trees).


테이블의 크기는 N log N(B-trees)에 따라 인덱스의 입력이 느려진다. (**말이 좀 이상. 테
이블이 커짐에 따라 인덱스 생성도 느려진다는 뜻이겠죵 **)

테이블에 락을 걸거나 insert 문에서 다중 값 목록을 사용하여 입력 속도를 빠르게 할 수
있다. 다중 값 목록을 사용하면 단일 insert 보다 5배 정도 속도가 빨라진다.

mysql> LOCK TABLES a WRITE;
mysql> INSERT INTO a VALUES (1,23),(2,34),(4,33);
mysql> INSERT INTO a VALUES (8,26),(6,29);
mysql> UNLOCK TABLES;

주요한 속도 차이는 모든 INSERT 문이 완료되고 난 후에 한번에 인덱스 버퍼가 쓰여기지
때문에 생긴다. 보통 서로 다른 여러 INSERT 문이 있으면 많은 인덱스 버퍼 플러쉬가 있
을 것이다. 모든 줄을 단일 문으로 입력하면 락은 필요없다.

락킹은 또한 다중 연결 테스트의 총 시간을 줄일 수는 있다. 그러나 어떤 스레드에서는 총
대기시간은 증가할 수 있다.(왜냐면 락을 기다리기 때문이다)
예를 들어보자:

thread 1 does 1000 inserts
thread 2, 3, and 4 does 1 insert
thread 5 does 1000 inserts

락을 사용하지 않으면 2, ,3 4는 1과 5 전에 끝마칠 것이다. 락을 사용하면 2,3,4는 아마도 1
이나 5 전에 끝나지 않을 것이다. 그러나 총 시간은 40% 빨라진다.

INSERT, UPDATE, DELETE 오퍼레이션은 mysql에서 매우 빠르다. 그렇기 때문에 줄에서
5개 이상의 insert나 update를 할 때 락을 추가하면 더 좋은 성능을 얻을 수 있다. 줄에 매
우 많은 자료를 입력한다면 다른 스레드에서 테이블에 접근하도록 하기 위해 때때로(각 100
0줄마다) UNLOCK TABLES를 사용하는 LOCK TABLES 실행하면 된다. 이렇게 하면 좋
은 성능을 낼 수 있다. (** 열심히 입력을 하고 중간에 락을 풀었다가 다시 락을 거는 것
반복함**)

물론 LOAD DATA INFILE 이 더 빠르다.

'OS&DB > Mysql' 카테고리의 다른 글

mysql 백업 및 복원  (0) 2013.03.14
OS&DB/리눅스 2013. 3. 12. 22:56

리눅스 자바 설치 및 환경설정

[출처] [리눅스 자바설치]|작성자 jxs2

 

현재 자바설치되어있나  확인

#which java


 

운영체제가 몇비트인지 확인

#getconf LONG_BIT



 

다운받기

wget http://download.oracle.com/otn-pub/java/jdk/6u31-b04/jdk-6u31-linux-x64.bin


 

/usr/local/src 폴더에 다운받은 bin 파일 옮긴다

#mv jdk-6u31-linux-x64.bin /usr/local


 

실행권한을 준다.

#chmod 755 /usr/local/jdk-6u31-linux-x64.bin

실행

# ./jdk-6u31-linux-x64.bin



 

그 후에 PATH 설정을 해준다.

PATH설정은 루트계정이 있는 리눅스와 없는 리눅스로 나뉜다.

1. 루트계정이 있는 경우

/etc/profile.d/경로가 보일 것이다.

# vi class.sh 입력하고 엔터

JAVA_HOME=/자바폴더경로

PATH=$PATH:$JAVA_HOME/bin

export JAVA_HOME

export PATH


 

위의 내용을 모두 적은 후 저장

그러면 class.sh 파일이 생긴다.

#source /etc/profile.d/class.sh

(후에 #java -version 해주는 센스)

2. 루트계정이 없는 경우

# vi /etc/profile 접속

unset i

unset pathmunge  << 아래에 입력

JAVA_HOME=/자바폴더경로

PATH=$PATH:$JAVA_HOME/bin

export JAVA_HOME

export PATH

그리고 저장

#source /etc/profile.d/class.sh  (컴파일)

[출처] 리눅스에 JAVA 설치하기|작성자 rzip84



 

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

이제 JAVA_HOME과 PATH를 설정해 주면 됩니다.

/etc 에 있는 profile을 편집합니다.


 

$ cd /etc

$ vi profile


 

파일 제일 마지막에 다음 내용을 추가합니다.


 

export JAVA_HOME=/usr/local/jdk1.6.0_31

export PATH=$PATH:$JAVA_HOME/bin


 

저장하고 나오신 후 (vi 저장 명령어는 :wq 를 입력하시면 됩니다.)

$ source profile 하시면 적용이 완료됩니다.


 

$ java -version 이라고 입력했을때 아래와 같은 화면이 나오면 정상적으로 설치가 된것입니다.


 

java version “1.6.0_23″

Java(TM) SE Runtime Environment (build 1.6.0_23-b05)

Java HotSpot(TM) 64-Bit Server VM (build 19.0-b09, mixed mode)



 

'OS&DB > 리눅스' 카테고리의 다른 글

ubuntu 다운로드  (0) 2013.05.07
OS&DB 2013. 3. 12. 22:52

윈도우7 부트픽스

출처:http://ksh6438.blog.me/20163255316

 

win7 설치 디스크로 부팅합니다.

시스템 복구를 클릭한후 복구 메뉴중 명령 프롬프트를 엽니다.

아래와 같은 값을 입력합니다.
bootrec /fixboot 엔터
bootrec /fixmbr 엔터

그리고 다시시작하면 정상적으로 복구됩니다.

 

프로그램/기타 2013. 3. 12. 22:20

코드 하이라이트(SyntaxHighlighter)

 .

 

Scripts, Styles 폴더 내의 파일들을 모두 업로드
티스토리 관리 페이지 - HTML/CSS 편집 - 파일 업로드 - 추가

 

아래의 코드를 </body> 앞에 붙여넣습니다.
(티스토리 관리 페이지 - HTML/CSS 편집 - skin.html)

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
<!-- ★★★ 코드 시작 부분 by Taking ★★★ -->
<link rel=stylesheet type="text⁄css" href=".⁄images⁄shCore.css">
<!-- 이 부분이 테마 수정 부분입니다 -->
<link rel=stylesheet type="text⁄css" href=".⁄images⁄shThemeDefault.css">
<!--
테마 종류 리스트
shThemeDefault
shThemeDjango
shThemeEclipse
shThemeEmacs
shThemeFadeToGrey
shThemeMDUItra
shThemeMidnight
shThemeRDark
-->
<script type="text⁄javascript" src=".⁄images⁄shCore.js"><⁄script>
<script type="text⁄javascript" src=".⁄images⁄shLegacy.js"><⁄script>
<script type="text⁄javascript" src=".⁄images⁄shBrushAppleScript.js"><⁄script>
<script type="text⁄javascript" src=".⁄images⁄shBrushAS3.js"><⁄script>
<script type="text⁄javascript" src=".⁄images⁄shBrushBash.js"><⁄script>
<script type="text⁄javascript" src=".⁄images⁄shBrushColdFusion.js"><⁄script>
<script type="text⁄javascript" src=".⁄images⁄shBrushCpp.js"><⁄script>
<script type="text⁄javascript" src=".⁄images⁄shBrushCSharp.js"><⁄script>
<script type="text⁄javascript" src=".⁄images⁄shBrushCss.js"><⁄script>
<script type="text⁄javascript" src=".⁄images⁄shBrushDelphi.js"><⁄script>
<script type="text⁄javascript" src=".⁄images⁄shBrushDiff.js"><⁄script>
<script type="text⁄javascript" src=".⁄images⁄shBrushErlang.js"><⁄script>
<script type="text⁄javascript" src=".⁄images⁄shBrushGroovy.js"><⁄script>
<script type="text⁄javascript" src=".⁄images⁄shBrushJava.js"><⁄script>
<script type="text⁄javascript" src=".⁄images⁄shBrushJavaFX.js"><⁄script>
<script type="text⁄javascript" src=".⁄images⁄shBrushJScript.js"><⁄script>
<script type="text⁄javascript" src=".⁄images⁄shBrushPerl.js"><⁄script>
<script type="text⁄javascript" src=".⁄images⁄shBrushPhp.js"><⁄script>
<script type="text⁄javascript" src=".⁄images⁄shBrushPlain.js"><⁄script>
<script type="text⁄javascript" src=".⁄images⁄shBrushPowerShell.js"><⁄script>
<script type="text⁄javascript" src=".⁄images⁄shBrushPython.js"><⁄script>
<script type="text⁄javascript" src=".⁄images⁄shBrushRuby.js"><⁄script>
<script type="text⁄javascript" src=".⁄images⁄shBrushSass.js"><⁄script>
<script type="text⁄javascript" src=".⁄images⁄shBrushScala.js"><⁄script>
<script type="text⁄javascript" src=".⁄images⁄shBrushSql.js"><⁄script>
<script type="text⁄javascript" src=".⁄images⁄shBrushVb.js"><⁄script>
<script type="text⁄javascript" src=".⁄images⁄shBrushXml.js"><⁄script>
<script type=text⁄javascript>
⁄* SyntaxHighlighter 콘픽 상세설정 부분 *⁄
SyntaxHighlighter.defaults['toolbar'] = false; ⁄⁄ 툴바 설정 (기본값 True)
SyntaxHighlighter.defaults['gutter'] = true; ⁄⁄ 라인 번호 설정 (기본값 True)
SyntaxHighlighter.defaults['tab-size'] = 4; ⁄⁄ 탭 사이즈 설정 (기본값 4)
SyntaxHighlighter.defaults['first-line'] = 1; ⁄⁄ 라인 시작 숫자 (기본값 1)
SyntaxHighlighter.defaults['auto-links'] = true; ⁄⁄ 링크 설정 (기본값 true)
SyntaxHighlighter.all();
<⁄script>
<!-- ★★★ 코드 끝 부분 by Taking ★★★ -->

예제)
<pre class="brush:c">

#include <stdio.h>
int main(void){
printf("hello world\n");
return 0;
}
</pre>

1
2
3
4
5
6
#include <stdio.h>
int main(void){
printf("hello world\n");
return 0;
}
</stdio.h>

다른 종류의 문법또한 brush aliases 를 바꾸시면 적용됩니다.




'SyntaxHighlighter'에서 지원하는 문법


http://my.taking.kr/26

프로그램/Android 2013. 3. 12. 15:33

안드로이드 다이얼로그 AlertDialog.Builder

  
AlertDialog.Builder mDialogBuilder = new AlertDialog.Builder(Activity_this);  
AlertDialog mDialoga = mDialogBuilder.create();

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

//호출 dialog(MainActivity.this , "main 호출\n");

//생성public static void dialog(Context Activity_this, String message) {    
if (mDialog == null) {   
mDialog = new AlertDialog.Builder(Activity_this);     
mDialog.setMessage(message);   
mDialog.setPositiveButton("ok", new OnClickListener() {    
@Override    
public void onClick(DialogInterface dialog, int which) {     
// TODO 자동 생성된 메소드 스텁     
strDialog = "";    
}
  });
    mDialog.setMessage(message);  
}  
mDialog.show(); 
}

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


public static AlertDialog mDialog----
if (mDialog != null)
    mDialog.dismiss();
       AlertDialog.Builder mDialogBuilder = new AlertDialog.Builder(Activity_this);   
mDialogBuilder.setPositiveButton("ok", new OnClickListener() {
    @Override   
 public void onClick(DialogInterface dialog, int which) {   
  // TODO 자동 생성된 메소드 스텁   
  strDialog = "";
    }
   });
   mDialog = mDialogBuilder.create();   
//mDialog.setMessage(message);
      strDialog += message + "\n=========================\n";  
 mDialog.setMessage(strDialog);     mDialog.show();


프로그램/Android 2013. 3. 12. 13:22

안드로이드 에러 android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application

android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application

 

위 에러 발생이유는  다이얼로그 생성시 context를 getApplicationContext()로 넣어서 발생하는 문제이다.

해결 방법은 context에 activityName.this를 넣어서 사용하면 된다.


 

프로그램/Android 2013. 3. 12. 10:31

안드로이드 토스트 연속 출력 및 위치 지정하기


//선언
 
static Toast mtoast;
 
 
 
// 사용
 
void toastprint(string string){
 
 
 
 if (mtoast == null) {
    mtoast = Toast.makeText(mContext, string, length);
   } else {
    mtoast.setText(string +"set");
   }
 

       int offsetX = 10;
       int offsetY = 10;
       mtoast.setGravity(Gravity.CENTER, offsetX, offsetY);
       mtoast.show(); 

}

2013. 3. 12. 01:43

RSS 등록 신청 했음

보호되어있는 글입니다.
내용을 보시려면 비밀번호를 입력해주세요.

잡담/문신 2013. 3. 12. 00:58

[문신] 미춰버리겠네

 

프로그램/C# 2013. 3. 12. 00:51

C# 화면 캡쳐

화면 캡쳐


   public void ScreenCapture(Size ScreenSize, String FileName)
 
        {
 
            Bitmap bitmap = new Bitmap(ScreenSize.Width,ScreenSize.Height);
 
            Graphics g = Graphics.FromImage(bitmap);
 
            g.CopyFromScreen(new Point(0, 0), new Point(0, 0), ScreenSize);
 
            bitmap.Save(FileName, ImageFormat.Bmp);
 
        }





'프로그램 > C#' 카테고리의 다른 글

C# 리스트뷰 체크된 아이템 얻기  (0) 2013.03.25
크로스 스레드 해결법  (0) 2013.03.19
C# MDI 폼안에 폼 띵우기  (0) 2013.03.12
C# 폼 투명하게 하기  (0) 2013.03.12
C# 파일경로  (0) 2013.03.08