By Thomas ( Juli 17, 2009 at 09:08) · Filed under Helferlein, MySQL, SQL, MySQL, nützliches, snippet, SQL
Ronald Bradfrods Blogeintrag über MVCC Merkwürdigkeiten in MySQL hat mich inspiriert seine Variante mal anzutesten wie er sich Tabellen mit Inhalt anlegt.
Und seine Funktion dann so anzupassen das eine Tabelle auch mit String Feldern und einem timestamp gefüllt werden kann.
Tabelle anlegen:
create table stringtab
( id int unsigned not null primary key auto_increment,
f1 varchar(512) not null,
f2 varchar(512) not null,
ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) engine=innodb;
Dann die passende Funktion:
DELIMITER $$
DROP PROCEDURE IF EXISTS `fill_strings` $$
CREATE PROCEDURE `fill_strings`(in p_max int)
DETERMINISTIC
begin
declare counter int default 1;
truncate table stringtab;
insert into stringtab values (1,1,1,now());
while counter < p_max
do
insert into stringtab (f1, f2, ts)
select right (concat(counter,f1,"blah"),511),
right (concat(f1,"blub",f2),511),
from_unixtime(RAND()*1251885200)
from stringtab;
select count(*) from stringtab into counter;
end while;
select counter;
end $$
DELIMITER ;
aufgerufen wird das ganze dann so:
call fill_strings(130);
Die Funktion gibt dann die tatsächlich eingefügten Zeilen als Rückgabewert aus.
Und für was man das ganze dann alles verwenden kann darauf gehe ich dann im nächsten Artikel ein
Permalink
By Thomas ( Juli 9, 2009 at 23:00) · Filed under MySQL, Performance, MySQL, QueryCache, Serie
Nettes Fundstück – ein MySQL Query Cache Tuner:
http://mituzas.lt/tech/query-cache-tuner/
Wem das nun nicht klar ist – ich schreib dazu noch was die Tage….
Permalink
By Thomas ( Juli 8, 2009 at 20:44) · Filed under NoSQL, Performance, Evaluierung, Lasttests, MySQL, NoSQL
Diesen Artikel muss ich unbedingt wieder aus der Schublade ziehen wenn wir es endlich mal schaffen zu evaluieren ob den eine der “neumodischen” NoSQL Stores uns, bei einer persistenten Metadatenhalde die noch in mehreren MySQL DBs abgelegt sind, helfen:
Hier wird schön beschrieben wie sich die großen Zahlen ganz schnell relativieren….
Und was so alles vergessen wird.
Permalink
By Thomas ( Juli 8, 2009 at 17:20) · Filed under MySQL, Niglichkeiten, SQL, Autoincrement, MySQL, SQL, Verhalten
Immer wieder mal stolpere ich über die Frage wie verhält sich das MySQL Autoincrement bei bereits belegten PK IDs.
CREATE TABLE `testab`
(
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(45) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1;
INSERT INTO `testab` (`name`) VALUES (’blub’);
INSERT INTO `testab` (`id`,`name`) VALUES (9,’9bsdwldub’);
INSERT INTO `testab` (,`name`) VALUES (’blub’); (’2′blub’);
Der letzte insert hat den PK 10 d.h. MySQL (wie auch Oracle) füllt mitnichten Lücken auf!
Ebenso muß mann sich bei MySQL nicht darum scheren ob eine ID schon belegt ist – diese wird dann beim insert übersprungen, das allerdings geht mit Sequenzen wie sie Oracle verwendet natürlich nicht.
Eine Sorge weniger…
Permalink