java如何实现e的次方_Java开发如何更改MySQL数据库datadir目录之MySQL数据库索引实现...
引言
MySQL是一個關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由瑞典MySQL AB 公司開發(fā),目前屬于 Oracle 旗下產(chǎn)品。MySQL 是最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)之一,在 WEB 應(yīng)用方面,MySQL是最好的 RDBMS (Relational Database Management System,關(guān)系數(shù)據(jù)庫管理系統(tǒng)) 應(yīng)用軟件。
MySQL是一種關(guān)系數(shù)據(jù)庫管理系統(tǒng),關(guān)系數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個大倉庫內(nèi),這樣就增加了速度并提高了靈活性。
MySQL是一種關(guān)系數(shù)據(jù)庫管理系統(tǒng),關(guān)系數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個大倉庫內(nèi),這樣就增加了速度并提高了靈活性。
MySQL
關(guān)于如何更改datadir目錄的問題:
ubuntu默認安裝mysql的時候,會將datadir設(shè)置為
/var/lib/mysql
下面,但是我們大多數(shù)時候都需要指定一個我們準備好的方便查找的目錄為數(shù)據(jù)存儲目錄,我們可以在
my.cnf
下面更改
datadir
這一行,將'
=
'后邊的目錄更改成我們自己的目錄即可。
例如:我將datadir改成
/data
下,則在my.cnf中做如下更改,在
[mysqld]
段
port = 3306
basedir = /usr
datadir = /data/mysql
更改完成保存退出,可以重啟mysql服務(wù)了,不知道您的服務(wù)器會不會報錯,我的反正mysql是起不來了。只要將datadir換回來就能啟動。出現(xiàn)這個問題的原因是在ubuntu中存在一個apparmor的服務(wù)。
這個服務(wù)主要作用是主要的作用是設(shè)置某個可執(zhí)行程序的訪問控制權(quán)限,可以限制程序 讀/寫某個目錄/文件,打開/讀/寫網(wǎng)絡(luò)端口等等。(原來,我們雖然講新的目錄所有者改為了mysql,但我們沒有告訴mysql要給新的目錄什么權(quán)限,于是就悲劇了)
他的配置文件在
/etc/apparmor.d/
中,在這里我們可以看到一個
usr.sbin.mysqld
的配置文件,打開看一下就明白了。我們的日志路徑、pid路徑等等都存放在這里,所以我們要改datadir路徑,這里也需要做更改,要更改log路徑同樣也要在這里更改。更改后配置如下:
/logs/mysql/mysql.log rw,
/logs/mysql/mysql.err.log rw,
/data/mysql/ r,
/data/mysql/** rwk,
/logs/mysql/ r,
/logs/mysql/* rw,
這是我更改過的路徑。更改完成以后,因為這是一個服務(wù),所以我們需要重啟一下這個服務(wù)。
/etc/init.d/apparmor restart
這里基本上不會存在問題了,(我就是在這里重啟了一下服務(wù)器,就OK了),如果還是無法啟動你的mysql,那么請使用如下命令
mysql_install_db --datadir=/data/mysql
查看一下是不是有報錯信息,根據(jù)錯誤排查一下。
最終按照這個方法解決了問題。真是多謝前輩。
最后本人做個總結(jié),只作為一種嘗試解決方案:
將mysql默認的datadir目錄"/var/lib/mysql"改為 "/home/mysql_data"
1、關(guān)掉數(shù)據(jù)庫
sudo /etc/init.d/mysql stop
2、因為我們指定的數(shù)據(jù)庫文件目錄為/home/mysql_data
cd /home //打開home
mkdir mysql_data //創(chuàng)建目錄
chown mysql:mysql mysql_data //并修改其擁有者及所屬群組為mysql:mysql.命令
//修改mysql配置文件my.cnf:
將 datadir=/var/lib/mysql 改為 datadir=/home/mysql_data
3、修改ubuntu中的安全設(shè)置
sudo gedit /etc/apparmor.d/usr.sbin.mysqld
在這個文件里面加入權(quán)限設(shè)定,將原來的
/var/lib/mysql/ r,
/var/lib/mysql/** rwk,
更換成(或直接添加)
/home/mysql_data/mysql/ r,
/home/mysql_data/mysql/** rwk,
4、重新初始化數(shù)據(jù)文件:執(zhí)行
sudo mysql_install_data
5、啟動mysql數(shù)據(jù)庫服務(wù)(或重啟服務(wù)器):
sudo /etc/init.d/mysql start
這個方法中最值得一提是修改
/etc/apparmor.d/usr.sbin.mysqld
這個文件,改變應(yīng)用程序的權(quán)限。
MySQL索引實現(xiàn)
在MySQL中,索引屬于存儲引擎級別的概念,不同存儲引擎對索引的實現(xiàn)方式是不同的,本文主要討論MyISAM和InnoDB兩個存儲引擎的索引實現(xiàn)方式。
MyISAM索引實現(xiàn)
MyISAM引擎使用B+Tree作為索引結(jié)構(gòu),葉節(jié)點的data域存放的是數(shù)據(jù)記錄的地址。下圖是MyISAM索引的原理圖:
圖1
這里設(shè)表一共有三列,假設(shè)我們以Col1為主鍵,則圖8是一個MyISAM表的主索引(Primary key)示意。可以看出MyISAM的索引文件僅僅保存數(shù)據(jù)記錄的地址。在MyISAM中,主索引和輔助索引(Secondary key)在結(jié)構(gòu)上沒有任何區(qū)別,只是主索引要求key是唯一的,而輔助索引的key可以重復(fù)。如果我們在Col2上建立一個輔助索引,則此索引的結(jié)構(gòu)如下圖所示:
圖2
同樣也是一顆B+Tree,data域保存數(shù)據(jù)記錄的地址。因此,MyISAM中索引檢索的算法為首先按照B+Tree搜索算法搜索索引,如果指定的Key存在,則取出其data域的值,然后以data域的值為地址,讀取相應(yīng)數(shù)據(jù)記錄。
MyISAM的索引方式也叫做“非聚集”的,之所以這么稱呼是為了與InnoDB的聚集索引區(qū)分。
總結(jié)
以 上就是我對Java開發(fā)如何更改MySQL數(shù)據(jù)庫datadir目錄之MySQL數(shù)據(jù)庫索引實現(xiàn)問題及其優(yōu)化總結(jié),分享給大家,覺得收獲的話可以點個關(guān)注收藏轉(zhuǎn)發(fā)一波喔,謝謝大佬們支持!
最后,每一位讀到這里的網(wǎng)友,感謝你們能耐心地看完。希望在成為一名更優(yōu)秀的Java程序員的道路上,我們可以一起學(xué)習(xí)、一起進步!都能贏取白富美,走向架構(gòu)師的人生巔峰!
想了解學(xué)習(xí)Java方面的技術(shù)內(nèi)容以及Java技術(shù)視頻的內(nèi)容可加群:722040762 驗證碼:頭條(06 必過)歡迎大家的加入喲!
總結(jié)
以上是生活随笔為你收集整理的java如何实现e的次方_Java开发如何更改MySQL数据库datadir目录之MySQL数据库索引实现...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java cmd停服务_java代码启动
- 下一篇: html 图片高度 页面高度自适应,怎样