Ubuntu
bitsCN.com选用较好的编译器和较好的编译器选项,这样应用可提高性能10-30%,这个对大多数程序都非常重要
Mysql的编译,不同的版本具体的配置方式是有差别的
旧版的配置形式参考
这个形式主要是使用configure,具体参考
http://www.cnblogs.com/hemhem/archive/2011/03/14/2087481.html
http://blog.csdn.net/bing19880122/article/details/5830650
http://flyingdutchman.iteye.com/blog/1901149
MySQL cMake 新老参数对比及 cMake 配置及安装方法详解 http://waynerqiu.com/7/153.html
新版Cmake形式的配置
http://www.cmake.org/
http://www.cnblogs.com/2018/p/3091616.html
mysql配置
http://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.html
http://dev.mysql.com/doc/refman/5.6/en/environment-variables.html
环境变量和CMAKE配置结合可以进行配置
如下是一个实例
#CMAKE_BUILD_TYPE Debug:-g Release:-O2 RelWithDebInfo:-O2 -g MinSizeRel:-Os
#WITH_EMBEDDED_SERVER Whether to build the libmysqld embedded server library.
#WITH_PARTITION_STORAGE_ENGINE 表分区
#-DWITH_ASAN=1 / #must gcc > 4.5 参考4.8.2
#DENABLE_DOWNLOADS google MOCK test
cmake . /
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql /
-DCMAKE_BUILD_TYPE=Release /
-DSYSCONFDIR=/etc /
-DINSTALL_SBINDIR=/usr/local/mysql/bin /
-DMYSQL_DATADIR=/usr/local/mysql/data /
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock /
-DENABLED_LOCAL_INFILE=1 /
-DMYSQL_TCP_PORT=3306 /
-DDEFAULT_CHARSET=utf8 /
-DDEFAULT_COLLATION=utf8_general_ci /
-DWITH_EMBEDDED_SERVER=0 /
-DWITH_MYISAM_STORAGE_ENGINE=1 /
-DWITH_INNOBASE_STORAGE_ENGINE=1 /
-DWITH_PARTITION_STORAGE_ENGINE=1 /
-DWITH_ARCHIVE_STORAGE_ENGINE=0 /
-DWITH_BLACKHOLE_STORAGE_ENGINE=0 /
-DWITH_MEMORY_STORAGE_ENGINE=0 /
-DWITH_PERFSCHEMA_STORAGE_ENGINE=0 /
-DWITH_EXTRA_CHARSETS=none /
-DWITH_DEBUG=0 /
# -DWITH_ASAN=1 /
# -DENABLE_DOWNLOADS=0 /
#end of cmake
注意-DWITH_ASAN=1这个选项需要GCC的版本在4.5以上,而Ubuntu10上默认的GCC是4.4
GCC编译升级过程
http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-4.8.2/gcc-4.8.2.tar.gz 从这下载GCC
使用如下的脚本可以进行升级
#!/bin/bash
# gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5.1)
:
ftp://gcc.gnu.org/pub/gcc/infrastructure/
GNU Multiple Precision Library (GMP) version 4.3.2 (or later)
MPFR Library version 2.4.2 (or later)
MPC Library version 0.8.1 (or later)
EOF
gccver=4.8.2
gmpver=4.3.2
mpfrver=2.4.2
mpcver=0.8.1
# where you put the downloaded source packages
pkgdir=.
# where you will build gcc
rootdir=gcc-${gccver}
# where you want to install gcc
prefix=/opt/gcc-${gccver}
# the languages you want gcc to support
langs=c,c++
#0 unpack file
:
#Create a new directory on a disk with plenty of space and unpack the sources there:
mkdir -p ${rootdir}
tar xzf ${pkgdir}/gcc-${gccver}.tar.gz
tar xjf ${pkgdir}/gmp-${gmpver}.tar.bz2
tar xjf ${pkgdir}/mpfr-${mpfrver}.tar.bz2
tar xzf ${pkgdir}/mpc-${mpcver}.tar.gz
#Next, move the prerequisite sources into the gcc source directory:
mv gmp-${gmpver} ${rootdir}/gmp
mv mpfr-${mpfrver} ${rootdir}/mpfr
mv mpc-${mpcver} ${rootdir}/mpc
EOF
#两种方式的编译和安装
#1.1 build on source dir
pushd ${rootdir}
#make clean
#默认的gcc支持32/64的双编译 gcc.gnu.org/wiki/FAQ#gnu_stubs-32.h glibc-devel-32bit 或 --disable-multilib
./configure --prefix=${prefix} --enable-languages=${langs} --disable-multilib
make
make install
popd
#1.2 build on other dir
:
#Now create a build directory and change to it
mkdir -p objdir
cd objdir
#Now configure gcc:
mkdir -p ${prefix}
../${rootdir}/configure --prefix=${prefix} --enable-languages=${langs} --disable-multilib
#configure --prefix=/opt/gcc-4.8.2 --enable-languages=c,c++
#Now build gcc:
make
#Finally, install gcc:
make install
#fixincludes 目录没有拷贝的问题,估计是--disable-multilib
cd ..
EOF
###代码+编译文件 2.6G
#2 更改当前的默认 #具体可检索"更改Ubuntu gcc、g++默认编译器版本"
#修改默认gcc和g++为4.4的版本
sudo update-alternatives --remove-all gcc
sudo update-alternatives --remove-all g++
sudo update-alternatives --install /usr/bin/gcc gcc /opt/gcc-4.8.2/bin/gcc 40
sudo update-alternatives --install /usr/bin/g++ g++ /opt/gcc-4.8.2/bin/g++ 40
#配置默认的gcc和g++
sudo update-alternatives --config gcc
sudo update-alternatives --config g++
#3 系统的C++库覆盖
rm -f /usr/lib/libstdc++*
cp -f /opt/gcc-4.8.2/lib64/libstdc++.so.6.0.18 /usr/lib/.
cp -f /opt/gcc-4.8.2/lib64/libstdc++.so.6 /usr/lib/.
注意其中的--disable-multilib这个选项需要加上,因此默认的gcc是可以在64为平台上编译出32,64两种程序,因此编译版的gcc升级时就需要32位的头文件,如果没有安装的话,这个是无法编译的。
当然也有一些简化的方式,需要联网升级,如下的这个说明
http://www.qtcn.org/bbs/apps.php?q=diary&a=detail&did=1456&uid=139371
编译安装
此时就可以加上 -DWITH_ASAN=1 / 进行编译了
注意:为了提高性能,我们只需要编译需要的功能即可
成功后的安装,就非常简单了,类似如下的脚本过程
make install
#sudo cp -f my.cnf /etc/my.cnf
#sudo chmod 0444 /etc/my.cnf
sudo sh -c 'groupadd mysql'
sudo sh -c 'useradd -r -g mysql mysql'
sudo chown -R mysql /usr/local/mysql/data
sudo /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
#sudo cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
/usr/local/mysql/support-files/mysql.server start
login="/usr/local/mysql/bin/mysql -uroot -D mysql -e"
pass="/usr/local/mysql/bin/mysql -uroot -p123456 -D mysql -e"
${login} "update mysql.user set password=PASSWORD('123456') where user='root';"
${login} "flush privileges;"
详细的资料和脚本参考 http://pan.baidu.com/s/1Cc7cr
Gcc版本切换的脚本
由于新版的gcc的支持了C++11标准,默认要求差别较大,如果现有的工程需要低的版本的话,可以使用如下的形式对系统的gcc进行自动切换
#!/bin/bash
if [ $# = 1 ] ; then
#4.4 目前的Ubuntu10都是gcc 4.4
#修改默认gcc和g++
sudo update-alternatives --remove-all gcc
sudo update-alternatives --remove-all g++
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 40
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.4 40
#配置默认的gcc和g++
sudo update-alternatives --config gcc
sudo update-alternatives --config g++
#系统的C++库覆盖 gcc 4.4
# rm -f /usr/lib/libstdc++*
# cp -f gcc4.4/libstdc++.so.6.0.13 /usr/lib/.
# ln -s /usr/lib/libstdc++.so.6.0.13 /usr/lib/libstdc++.so.6
else
#4.8
#gcc-4.8.2.tar.gz 安装到/opt
if [ -d /opt/gcc-4.8.2 ]; then
echo "gcc 4.8.2 installed"
else
tar xzf gcc-4.8.2.tar.gz -C /opt
fi
#修改默认gcc和g++
sudo update-alternatives --remove-all gcc
sudo update-alternatives --remove-all g++
sudo update-alternatives --install /usr/bin/gcc gcc /opt/gcc-4.8.2/bin/gcc 40
sudo update-alternatives --install /usr/bin/g++ g++ /opt/gcc-4.8.2/bin/g++ 40
#配置默认的gcc和g++
sudo update-alternatives --config gcc
sudo update-alternatives --config g++
#系统的C++库覆盖
# rm -f /usr/lib/libstdc++*
# cp -f /opt/gcc-4.8.2/lib64/libstdc++.so.6.0.18 /usr/lib/.
# cp -f /opt/gcc-4.8.2/lib64/libstdc++.so.6 /usr/lib/.
fi
#libstdc++.so.6 经试验选用高的libstdc++.so.6.0.18版本可以运行,具体都我们的应用有没有问题待验证
gcc -v
参考资料
这里有如上的相关资料和内容 http://pan.baidu.com/s/1Cc7cr
http://www.cnblogs.com/2018/p/3482263.html
http://www.cnblogs.com/2018/p/3464638.html
这两篇已经介绍了clang的安装和编译c++库的过程,下面会再讲讲mysql的clang编译安装过程
bitsCN.com
데이터베이스 최적화에서 쿼리 요구 사항에 따라 인덱싱 전략을 선택해야합니다. 1. 쿼리에 여러 열이 포함되고 조건 순서가 수정되면 복합 인덱스를 사용하십시오. 2. 쿼리에 여러 열이 포함되어 있지만 조건 순서가 고정되지 않은 경우 여러 단일 열 인덱스를 사용하십시오. 복합 인덱스는 다중 열 쿼리를 최적화하는 데 적합한 반면 단일 열 인덱스는 단일 열 쿼리에 적합합니다.

MySQL 느린 쿼리를 최적화하려면 SlowQueryLog 및 Performance_Schema를 사용해야합니다. 1. SlowQueryLog 및 Set Stresholds를 사용하여 느린 쿼리를 기록합니다. 2. Performance_schema를 사용하여 쿼리 실행 세부 정보를 분석하고 성능 병목 현상을 찾고 최적화하십시오.

MySQL 및 SQL은 개발자에게 필수적인 기술입니다. 1.MySQL은 오픈 소스 관계형 데이터베이스 관리 시스템이며 SQL은 데이터베이스를 관리하고 작동하는 데 사용되는 표준 언어입니다. 2.MYSQL은 효율적인 데이터 저장 및 검색 기능을 통해 여러 스토리지 엔진을 지원하며 SQL은 간단한 문을 통해 복잡한 데이터 작업을 완료합니다. 3. 사용의 예에는 기본 쿼리 및 조건 별 필터링 및 정렬과 같은 고급 쿼리가 포함됩니다. 4. 일반적인 오류에는 구문 오류 및 성능 문제가 포함되며 SQL 문을 확인하고 설명 명령을 사용하여 최적화 할 수 있습니다. 5. 성능 최적화 기술에는 인덱스 사용, 전체 테이블 스캔 피하기, 조인 작업 최적화 및 코드 가독성 향상이 포함됩니다.

MySQL 비동기 마스터 슬레이브 복제는 Binlog를 통한 데이터 동기화를 가능하게하여 읽기 성능 및 고 가용성을 향상시킵니다. 1) 마스터 서버 레코드는 Binlog로 변경됩니다. 2) 슬레이브 서버는 I/O 스레드를 통해 Binlog를 읽습니다. 3) 서버 SQL 스레드는 데이터를 동기화하기 위해 Binlog를 적용합니다.

MySQL은 오픈 소스 관계형 데이터베이스 관리 시스템입니다. 1) 데이터베이스 및 테이블 작성 : CreateAbase 및 CreateTable 명령을 사용하십시오. 2) 기본 작업 : 삽입, 업데이트, 삭제 및 선택. 3) 고급 운영 : 가입, 하위 쿼리 및 거래 처리. 4) 디버깅 기술 : 확인, 데이터 유형 및 권한을 확인하십시오. 5) 최적화 제안 : 인덱스 사용, 선택을 피하고 거래를 사용하십시오.

MySQL의 설치 및 기본 작업에는 다음이 포함됩니다. 1. MySQL 다운로드 및 설치, 루트 사용자 비밀번호를 설정하십시오. 2. SQL 명령을 사용하여 CreateAbase 및 CreateTable과 같은 데이터베이스 및 테이블을 만듭니다. 3. CRUD 작업을 실행하고 삽입, 선택, 업데이트, 명령을 삭제합니다. 4. 성능을 최적화하고 복잡한 논리를 구현하기 위해 인덱스 및 저장 절차를 생성합니다. 이 단계를 사용하면 MySQL 데이터베이스를 처음부터 구축하고 관리 할 수 있습니다.

innodbbufferpool은 데이터와 색인 페이지를 메모리에로드하여 MySQL 데이터베이스의 성능을 향상시킵니다. 1) 데이터 페이지가 버퍼 풀에로드되어 디스크 I/O를 줄입니다. 2) 더러운 페이지는 정기적으로 디스크로 표시되고 새로 고침됩니다. 3) LRU 알고리즘 관리 데이터 페이지 제거. 4) 읽기 메커니즘은 가능한 데이터 페이지를 미리로드합니다.

MySQL은 설치가 간단하고 강력하며 데이터를 쉽게 관리하기 쉽기 때문에 초보자에게 적합합니다. 1. 다양한 운영 체제에 적합한 간단한 설치 및 구성. 2. 데이터베이스 및 테이블 작성, 삽입, 쿼리, 업데이트 및 삭제와 같은 기본 작업을 지원합니다. 3. 조인 작업 및 하위 쿼리와 같은 고급 기능을 제공합니다. 4. 인덱싱, 쿼리 최적화 및 테이블 파티셔닝을 통해 성능을 향상시킬 수 있습니다. 5. 데이터 보안 및 일관성을 보장하기위한 지원 백업, 복구 및 보안 조치.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

Dreamweaver Mac版
시각적 웹 개발 도구

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음
