• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 119  文章 - 290  trackbacks - 0

            博客搬家了哦,請移步
            叫我abc

            常用鏈接

            留言簿(12)

            隨筆分類

            我的博客

            搜索

            •  

            積分與排名

            • 積分 - 303613
            • 排名 - 84

            最新評論

            閱讀排行榜


            前陣子交代了mysql的一些初級安裝問題,接下來繼續。

            1.設置存儲引擎(strorage engine)
            mysql有很多存儲引擎,不同的引擎有不同的存儲特性,應對不同的解決方案,這就不多說了。
            不過最基本的,應該是不用myisam,雖然它很快,但是不支持事務。
            innodb并不慢,雖然不可能會有myisam那么快,但是它支持事務,完整性優于更好的效率。
            所以配置mysql的第一步,就是設置已經選好的存儲引擎——innodb
            在.my.cnf配置文件中加上
            [server]
            default-storage-engine=INNODB

            2.設置數據存儲位置
            本來不會有這一步的,數據文件默認的會保存在mysql/data目錄下。但是我當前的磁盤分區快滿了,今后肯定沒有辦法導入大量數據,無奈之下加了塊磁盤,然后把數據存儲位置設置到新磁盤下。
            因為使用的是innodb,所以默認的數據源就不進行移動了,只要設置innodb的目錄即可
            [server]
            innodb_data_home_dir=/newdisk
            innodb_log_group_home_dir=/newdisk
            其中一個是數據文件目錄,另外一個是log目錄,這個log和binlog還不太一樣,主要是用來維護事務完整性的吧,并不是備份用的。
            The ib_logfile's hold statements affecting innodb tables only. If a crash occurs they are automatically used to complete any innodb transactions that didn't complete before the crash.

            3.設置字符集
            我想這是初次使用mysql的人通常會遇到的問題,而且越晚發現越致命吧。
            mysql支持多字符集,為了支持國際化存儲,通常服務器的字符集肯定會設置成utf8。不過沒有國際化需求的同學可以大大方方的使用gb2312/gbk之類的本地字符集。(默認是latin)
            [server]
            character_set_server=utf8
            服務器的字符集設置其實是次要的,畢竟可以通過create database或者create table來設置更具體的存儲字符集。
            客戶端的字符集設置是關鍵,分為三部分:
            1.client set。即作為數據源所使用的字符集。比如你從文件中導入數據到mysql,那么應該將client set設置為文件所用的字符集;又比如你通過客戶端執行插入語句,那么應該將client set設置成客戶端所用的字符集;我的secureCRT是utf8的,所以client set=utf8。
            2.connection set。mysql服務器收到數據后,會將文字從client set轉換成connection set。
            為什么要有一個connection set呢,直接轉換成存儲字符集入庫不就好了嗎?我查了一下,使用connection set的理由是,文字長度和文字比較等事情的結果,會根據字符集的不同而不同的。
            connection set可以根據需要設置,只要別是有損轉換即可。通常會和client set保持一致而去掉轉換,如果比較結果不影響什么的話。
            3.result set。mysql執行語句的結果集在發給你之前,會先轉換成result set,通常會和client set一致。你的客戶端用什么就讓它返回什么就好。
            我會選擇所有的字符集都用一種,這樣也就不需要什么轉換了。
            [client]
            default-character-set=utf8
            或者set names utf8(執行語句)

            4.表空間(table space)

            之所以提到表空間的問題,是因為innodb會把所有的數據都寫入到一個數據文件上,如果你不修改默認設置的話。訪問一個超大的文件和訪問多個較大的文件在效率上相比是怎樣我不清楚,但是我的當時導入數據的時候是越來越慢,于是就改成使用多個表空間(數據文件)了。
            [server]
            innodb_autoextend_increment=50
            innodb_data_file_path=ibdata1:700M;ibdata2:2200M;ibdata3:1250M;autoextend
            在多個表空間的情況下,mysql只會往最新的一個數據文件上寫數據,所以前面的表空間會固定在這個大小。
            除非老的表空間因刪除數據而有空閑,不然是不會往里寫入的,并且老的表空間是不會再增大的。
            這種多表空間的使用方式,需要偶爾停下機,新建一個表空間,還是挺麻煩的。
            posted on 2009-03-29 20:50 LOGOS 閱讀(1881) 評論(0)  編輯 收藏 引用 所屬分類: mysql入門
            亚洲中文字幕久久精品无码APP | 欧美无乱码久久久免费午夜一区二区三区中文字幕 | 亚洲国产精品无码久久青草| 狠狠精品久久久无码中文字幕| 久久久久婷婷| 久久av无码专区亚洲av桃花岛| 久久99热精品| 久久99九九国产免费看小说| 97久久国产亚洲精品超碰热| 香港aa三级久久三级老师2021国产三级精品三级在| 亚洲人成无码网站久久99热国产| 国产精品无码久久综合| 中文字幕久久亚洲一区| 91久久婷婷国产综合精品青草| 久久精品无码一区二区三区免费 | 99久久精品免费看国产免费| 久久精品国产欧美日韩99热| 日本一区精品久久久久影院| 亚洲女久久久噜噜噜熟女| 天天综合久久久网| 久久国产免费观看精品| 97精品伊人久久久大香线蕉| 久久人人爽人人爽AV片| 99久久精品费精品国产 | 成人久久综合网| 香蕉久久夜色精品升级完成| 久久国产成人午夜aⅴ影院| MM131亚洲国产美女久久| 亚洲精品乱码久久久久久久久久久久 | 99精品久久久久久久婷婷| 色综合久久中文字幕无码| 18禁黄久久久AAA片| 久久最新免费视频| 久久人搡人人玩人妻精品首页| 99热热久久这里只有精品68| 国产精品久久久久无码av| 99久久中文字幕| 国产女人aaa级久久久级| 久久久久这里只有精品 | 久久精品国产亚洲AV不卡| 精品久久人人妻人人做精品 |