User:Rootwyrm/FreeBSD Server

From MusicBrainz Wiki
Revision as of 01:17, 17 September 2012 by Rootwyrm (talk | contribs) (→‎MusicBrainz Server)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

Configuring MusicBrainz Server on FreeBSD 8.x and 9.x

What you'll need:

  • FreeBSD 8.x or FreeBSD 9.x with root or sudo access
  • Optionally, the ability to create a new user as well.
  • An up to date ports tree
  • Some very basic Perl and shell scripting (at this time)

First Steps

First, you'll need to add or choose a user to run the MusicBrainz Server as. The username and group doesn't matter too much (don't put them in wheel obviously.) Never run the server as root.

Ensure your ports tree is up to date (either using portsnap update or csup.) You must build some packages from ports to ensure options are set correctly. The options presented are intended for a 'bare minimums' install.

It is very important that you follow the steps in this guide in the exact order in which they are written. If you build things out of order, this can result in options being set incorrectly or dependencies not being installed correctly.

Local Database Server - Building Ports

  • bash shell - use defaults when prompted by dependencies.
cd /usr/ports/shells/bash && make install
OPTIONALLY:
pkg_add -r bash
  • Perl 5.14
cd /usr/ports/lang/perl5.14
make -DWITH_SITECUSTOMIZE install
  • PostgreSQL 9.1 - gcc, ICC; clang builds should omit -DWITH_OPTIMIZED_CFLAGS for now.
cd /usr/ports/databases/postgresql91-server
make -DWITH_NLS -DWITH_OPTIMIZED_CFLAGS -DWITH_XML -DWITH_TZDATA -DWITH_INTDATE -DWITH_SSL
make install
cd /usr/ports/databases/postgresql91-contrib
make install
cd /usr/ports/databases/postgresql91-plperl
make install
  • Memcached - use defaults (No REPCACHED, No SASL)
cd /usr/ports/databases/memcached && make install
  • Git

Ensure only the following options are selected:

    • CONTRIB
    • ETCSHELLS
    • ICONV
    • NLS
    • PERL
cd /usr/ports/devel/git
make config -- this is where you select options
make install
  • GNU Make
cd /usr/ports/devel/gmake && make install
  • expat libraries
cd /usr/ports/textproc/expat2 && make install
  • Gnome XML libraries (libxml2)
cd /usr/ports/textproc/libxml2 && make install
  • Carton - this will pull in a number of Perl dependencies as well
cd /usr/ports/devel/p5-carton && make install
  • DBD::Pg - this must be installed
cd /usr/ports/databases/p5-DBD-Pg && make install

At this point, you should now add any additional packages you desire for flavor (such as editors, additional shells, interpreters and so on.)

Remote Database Server - Building Ports

This is for configurations where the database will reside on a separate system. You will need to know how to use scp, and also to consult the documentation for your database system to ensure you have the correct packages and libraries installed and have configured Memcached correctly. No assumptions are made about PostgreSQL version or host operating system for the remote server in this scenario.

  • bash shell - use defaults when prompted by dependencies.
cd /usr/ports/shells/bash && make install
OPTIONALLY:
pkg_add -r bash
  • Perl 5.14
cd /usr/ports/lang/perl5.14
make -Dusesitecustomize install
  • PostgreSQL 9.1 - gcc, ICC; clang builds should omit -DWITH_OPTIMIZED_CFLAGS for now.
cd /usr/ports/databases/postgresql91-client
make -DWITH_NLS -DWITH_OPTIMIZED_CFLAGS -DWITH_XML -DWITH_TZDATA -DWITH_INTDATE -DWITH_SSL
make install
  • Git

Ensure only the following options are selected:

CONTRIB, ETCSHELLS, ICONV, NLS, PERL

This will also pull in Python and IO::Socket::SSL - the default options should be accepted when prompted.

cd /usr/ports/devel/git
make config -- this is where you select options
make install
  • expat libraries
cd /usr/ports/textproc/expat2 && make install
  • Carton - this will pull in a number of Perl dependencies as well
cd /usr/ports/devel/p5-carton && make install
  • DBD::Pg - this must be installed
cd /usr/ports/databases/p5-DBD-Pg && make install

At this point, you should now add any additional packages you desire for flavor (such as editors, additional shells, interpreters and so on.)

Setting up the MusicBrainz Server

You must change the default shell for the musicbrainz user to /usr/local/bin/bash and ensure this user's .bash_login includes a path statement which includes /usr/local/bin:/usr/local/sbin.

Change to the user which you will run musicbrainz-server as.

Clone the current Git repository:

git clone git://git.musicbrainz.org/musicbrainz-server.git

Now perform FreeBSD specific configuration for your .gitignore file.

echo "/admin/cron/freebsd*" >> musicbrainz-server/.gitignore
NOTE: This is a temporary solution until the various cron scripts are fixed to be path neutral.

You will now need to perform more than a little dancing with Carton to ensure packages are installed correctly. And yes, it is necessary to run 'install --deployment' twice.

cd musicbrainz-server
carton install --deployment
carton install --deployment
cp carton.lock carton.lock.save
carton install DateTime::Set DateTime::Event::ICal
carton install Catalyst::Runtime Catalyst::Plugin::AutoRestart
carton install REST::Utils Function::Parameters 
carton install XML::Parser::Lite

Installation is now complete. You should configure MusicBrainz Server as you would on any other system.

Configuring crontab for a MusicBrainz Slave

You will need a separate crontab script which is path neutral for operating a MusicBrainz Slave server on FreeBSD, which is currently not in git.

Install /usr/ports/sysutils/logrotate either by building or by using pkg_add -r logrotate

Create the file musicbrainz-server/admin/cron/freebsd_slave.sh:

#!/usr/local/bin/bash
PATH="$PATH:/usr/local/bin:/usr/local/sbin"

mb_server=`dirname $0`/../..
cd $mb_server

eval `carton exec -- ./admin/ShowDBDefs`
carton exec -- ./admin/config.sh

X=${SLAVE_LOG:=$MB_SERVER_ROOT/slave.log}
X=${LOGROTATE:=logrotate --state $MB_SERVER_ROOT/.logrotate-state}

carton exec -- ./admin/replication/LoadReplicationChanges >> $SLAVE_LOG 2>&1 ||
{
    RC=$?
    echo `date`" : LoadReplicationChanges failed (rc=$RC) - see $SLAVE_LOG"
}

$LOGROTATE /dev/stdin <<EOF
$SLAVE_LOG {
    daily
    rotate 30
}
EOF

#eof

Then perform chmod +x musicbrainz-server/admin/cron/freebsd_slave.sh followed by crontab -e as the user running the MusicBrainz Server. This example runs every 2 hours at 35 minutes past the hour.

#Crontab for MusicBrainz Server Slave on FreeBSD
#Min   Hr      MDay    Month   WDay    Command
35     */2     *       *       *       ~/musicbrainz-server/admin/cron/freebsd_slave.sh

Performance on FreeBSD

MusicBrainz Server

For Perl instances, performance on FreeBSD is generally equal to that of Linux. Non-exhaustive testing has indicated that FreeBSD may be slightly faster on like-for-like hardware configurations, but the difference is generally ~20ms or less on most queries. However, particularly complex queries may demonstrate exponential and repeatable performance gains on FreeBSD.

Test Environment: BabyDragon (X3450, VMware ESXi 4.0U3) - no CPU restriction, 512MB memory, remote PostgreSQL 9.1.4.

Test Query: Search for "Beethoven," click "Ludwig van Beethoven"

Notes: Database was shut down, all buffers and cache were flushed, and restarted between each test.

Linux Test
Linux Environment: Debian wheezy/sid, kernel 3.2.0-3-PAE, Perl 5.14.2

First Operation, 597.551ms:
Key	Value
MusicBrainz::Server::Data::Search->external_search	0.23721
MusicBrainz::Server::Data::Country->_get_by_key	0.05206
MusicBrainz::Server::Data::FileCache->manifest_files	0.00812
MusicBrainz::Server::Data::Search->schema_fixup	0.00667
MusicBrainz::Server::Data::Country->_new_from_row	0.00100
MusicBrainz::Server::Data::Country->find_by_code	0.00044
MusicBrainz::Server::Data::RateLimiter->check_rate_limit	0.00008
MusicBrainz::Server::Model::MB->context	0.00006
MusicBrainz::Server::Data::Country->_columns	0.00005
MusicBrainz::Server::Data::RateLimiter->get_socket	0.00005
MusicBrainz::Server::Data::Country->_entity_class	0.00005
MusicBrainz::Server::Data::Country->_column_mapping	0.00004
MusicBrainz::Server::Data::Country->_table	0.00004
MusicBrainz::Server::Data::Artist->_entity_class	0.00001

Second Operation, 13652.024ms:
Key	Value
MusicBrainz::Server::Data::ReleaseGroup->find_by_artist	10.98394
MusicBrainz::Server::Data::ArtistCredit->get_by_ids	0.90881
MusicBrainz::Server::Data::Relationship->_load	0.25070
MusicBrainz::Server::Data::Artist->_get_by_keys_append_sql	0.22249
MusicBrainz::Server::Data::EntityTag->find_top_tags	0.18149
MusicBrainz::Server::Data::Editor->_get_by_keys_append_sql	0.15582
MusicBrainz::Server::Data::CoreEntity->_new_from_row	0.10296
MusicBrainz::Server::Data::Editor->load_preferences	0.06356
MusicBrainz::Server::Data::Link->_load_attributes	0.05785
MusicBrainz::Server::Data::Entity->_get_by_keys_append_sql	0.04327
MusicBrainz::Server::Data::LinkType->_load_attributes	0.01533
MusicBrainz::Server::Data::Artist->load_meta	0.01356
MusicBrainz::Server::Data::Artist->is_empty	0.01314
MusicBrainz::Server::Data::Artist->_build_ipi	0.00867
MusicBrainz::Server::Data::ReleaseGroupType->load	0.00852
MusicBrainz::Server::Data::FileCache->manifest_files	0.00833
MusicBrainz::Server::Data::ArtistCredit->load	0.00619
MusicBrainz::Server::Data::Artist->_new_from_row	0.00526
MusicBrainz::Server::Data::EntityTag->find_tag_count	0.00506
MusicBrainz::Server::Data::Entity->_new_from_row	0.00410
MusicBrainz::Server::Data::Relationship->_new_from_row	0.00365
MusicBrainz::Server::Data::CoreEntity->_get_by_keys_append_sql	0.00290
MusicBrainz::Server::Data::Country->_get_by_keys_append_sql	0.00242
MusicBrainz::Server::Data::ArtistType->_get_by_keys_append_sql	0.00237
MusicBrainz::Server::Data::ArtistCredit->_add_to_cache	0.00231
MusicBrainz::Server::Data::LinkType->load	0.00222
MusicBrainz::Server::Data::Artist->get_by_gid	0.00217
MusicBrainz::Server::Data::Link->load	0.00176
MusicBrainz::Server::Data::Relationship->load_entities	0.00172
MusicBrainz::Server::Data::ReleaseGroupSecondaryType->load_for_release_groups	0.00169
MusicBrainz::Server::Data::LinkType->get_by_ids	0.00166
MusicBrainz::Server::Data::IPI->find_by_entity_id	0.00161
MusicBrainz::Server::Data::Editor->_new_from_row	0.00150
MusicBrainz::Server::Data::ReleaseGroup->_new_from_row	0.00110
MusicBrainz::Server::Data::Link->get_by_ids	0.00107
MusicBrainz::Server::Data::Link->_add_to_cache	0.00093
MusicBrainz::Server::Data::LinkType->_add_to_cache	0.00070
MusicBrainz::Server::Data::Relationship->load_subset	0.00064
MusicBrainz::Server::Data::URL->_entity_class	0.00057
MusicBrainz::Server::Data::Editor->load	0.00050
MusicBrainz::Server::Data::Country->get_by_ids	0.00050
MusicBrainz::Server::Data::Artist->_build_tags	0.00048
MusicBrainz::Server::Data::Country->load	0.00044
MusicBrainz::Server::Data::ArtistType->get_by_ids	0.00044
MusicBrainz::Server::Data::EntityTag->_new_from_row	0.00042
MusicBrainz::Server::Data::Gender->load	0.00041
MusicBrainz::Server::Data::Gender->_add_to_cache	0.00039
MusicBrainz::Server::Data::ReleaseGroupType->_add_to_cache	0.00039
MusicBrainz::Server::Data::Country->_add_to_cache	0.00038
MusicBrainz::Server::Data::ReleaseGroup->_column_mapping	0.00038
MusicBrainz::Server::Data::ReleaseGroupType->get_by_ids	0.00037
MusicBrainz::Server::Data::Gender->get_by_ids	0.00036
MusicBrainz::Server::Data::ArtistType->_add_to_cache	0.00035
MusicBrainz::Server::Data::ArtistType->load	0.00031
MusicBrainz::Server::Data::Entity->get_by_ids	0.00026
MusicBrainz::Server::Data::Country->_new_from_row	0.00024
MusicBrainz::Server::Data::URL->_new_from_row	0.00021
MusicBrainz::Server::Data::IPI->isa	0.00019
MusicBrainz::Server::Data::ReleaseGroup->_entity_class	0.00018
MusicBrainz::Server::Data::Entity->_get_by_keys	0.00017
MusicBrainz::Server::Data::CoreEntity->get_by_ids	0.00017
MusicBrainz::Server::Data::URL->_column_mapping	0.00016
MusicBrainz::Server::Data::ArtistType->_new_from_row	0.00014
MusicBrainz::Server::Data::Editor->get_by_ids	0.00013
MusicBrainz::Server::Data::CoreEntity->get_by_gid	0.00012
MusicBrainz::Server::Data::Artist->annotation	0.00011
MusicBrainz::Server::Data::LinkType->_id_column	0.00011
MusicBrainz::Server::Data::IPI->load_for	0.00011
MusicBrainz::Server::Data::Editor->_get_by_keys	0.00010
MusicBrainz::Server::Data::Entity->isa	0.00009
MusicBrainz::Server::Data::Artist->_build_annotation_data	0.00009
MusicBrainz::Server::Data::ArtistCredit->_id_cache_prefix	0.00008
MusicBrainz::Server::Data::Artist->ipi	0.00008
MusicBrainz::Server::Data::Country->_get_by_keys	0.00007
MusicBrainz::Server::Data::Artist->_column_mapping	0.00007
MusicBrainz::Server::Data::URL->get_by_ids	0.00007
MusicBrainz::Server::Data::CoreEntity->_get_by_keys	0.00006
MusicBrainz::Server::Data::Artist->_get_by_keys	0.00006
MusicBrainz::Server::Data::RateLimiter->check_rate_limit	0.00006
MusicBrainz::Server::Data::LinkType->_id_cache_prefix	0.00006
MusicBrainz::Server::Data::IPI->type	0.00006
MusicBrainz::Server::Data::Artist->tags	0.00006
MusicBrainz::Server::Data::Gender->_new_from_row	0.00006
MusicBrainz::Server::Model::MB->context	0.00005
MusicBrainz::Server::Data::URL->_id_column	0.00005
MusicBrainz::Server::Data::EntityTag->tag_table	0.00005
MusicBrainz::Server::Data::URL->_get_by_keys_append_sql	0.00005
MusicBrainz::Server::Data::LinkType->_column_mapping	0.00005
MusicBrainz::Server::Data::EntityTag->type	0.00005
MusicBrainz::Server::Data::Editor->_column_mapping	0.00005
MusicBrainz::Server::Data::LinkType->_new_from_row	0.00004
MusicBrainz::Server::Data::Link->_id_cache_prefix	0.00004
MusicBrainz::Server::Data::Gender->_get_by_keys_append_sql	0.00004
MusicBrainz::Server::Data::Link->_new_from_row	0.00004
MusicBrainz::Server::Data::Gender->_get_by_keys	0.00004
MusicBrainz::Server::Data::URL->_get_by_keys	0.00004
MusicBrainz::Server::Data::LinkType->_get_by_keys_append_sql	0.00004
MusicBrainz::Server::Data::Gender->_column_mapping	0.00004
MusicBrainz::Server::Data::Link->_get_by_keys	0.00003
MusicBrainz::Server::Data::CoreEntity->_column_mapping	0.00003
MusicBrainz::Server::Data::RateLimiter->get_socket	0.00003
MusicBrainz::Server::Data::ArtistType->_get_by_keys	0.00003
MusicBrainz::Server::Data::Link->_get_by_keys_append_sql	0.00003
MusicBrainz::Server::Data::LinkType->_get_by_keys	0.00003
MusicBrainz::Server::Data::Country->_id_cache_prefix	0.00003
MusicBrainz::Server::Data::ReleaseGroupType->_id_column	0.00003
MusicBrainz::Server::Data::Artist->_id_cache_prefix	0.00003
MusicBrainz::Server::Data::Link->_id_column	0.00003
MusicBrainz::Server::Data::ReleaseGroupType->_new_from_row	0.00002
MusicBrainz::Server::Data::ReleaseGroupType->_get_by_keys_append_sql	0.00002
MusicBrainz::Server::Data::Entity->_id_column	0.00002
MusicBrainz::Server::Data::ReleaseGroupType->_get_by_keys	0.00002
MusicBrainz::Server::Data::Entity->_column_mapping	0.00002
MusicBrainz::Server::Data::Artist->isa	0.00002
MusicBrainz::Server::Data::ReleaseGroupType->_column_mapping	0.00002
MusicBrainz::Server::Data::Gender->_id_column	0.00002
MusicBrainz::Server::Data::ReleaseGroup->_columns	0.00002
MusicBrainz::Server::Data::Artist->_entity_class	0.00002
MusicBrainz::Server::Data::URL->_columns	0.00002
MusicBrainz::Server::Data::Link->_column_mapping	0.00002
MusicBrainz::Server::Data::Country->_id_column	0.00002
MusicBrainz::Server::Data::ReleaseGroup->_table	0.00002
MusicBrainz::Server::Data::Country->_columns	0.00002
MusicBrainz::Server::Data::Gender->_id_cache_prefix	0.00002
MusicBrainz::Server::Data::IPI->_table	0.00002
MusicBrainz::Server::Data::Country->_table	0.00002
MusicBrainz::Server::Data::Country->_entity_class	0.00001
MusicBrainz::Server::Data::ReleaseGroupType->_id_cache_prefix	0.00001
MusicBrainz::Server::Data::IPI->_columns	0.00001
MusicBrainz::Server::Data::URL->_table	0.00001
MusicBrainz::Server::Data::LinkType->_columns	0.00001
MusicBrainz::Server::Data::Link->_entity_class	0.00001
MusicBrainz::Server::Data::ArtistType->_id_cache_prefix	0.00001
MusicBrainz::Server::Data::Artist->_columns	0.00001
MusicBrainz::Server::Data::Artist->_table	0.00001
MusicBrainz::Server::Data::Gender->_entity_class	0.00001
MusicBrainz::Server::Data::LinkType->_entity_class	0.00001
MusicBrainz::Server::Data::Gender->_columns	0.00001
MusicBrainz::Server::Data::CoreEntity->_id_column	0.00001
MusicBrainz::Server::Data::LinkType->_table	0.00001
MusicBrainz::Server::Data::Country->_column_mapping	0.00001
MusicBrainz::Server::Data::Link->_table	0.00001
MusicBrainz::Server::Data::Gender->_table	0.00001
MusicBrainz::Server::Data::Editor->_columns	0.00001
MusicBrainz::Server::Data::ArtistType->_table	0.00001
MusicBrainz::Server::Data::ArtistType->_id_column	0.00001
MusicBrainz::Server::Data::ArtistType->_column_mapping	0.00001
MusicBrainz::Server::Data::ReleaseGroupType->_entity_class	0.00000
MusicBrainz::Server::Data::ReleaseGroupType->_table	0.00000
MusicBrainz::Server::Data::Editor->_entity_class	0.00000
MusicBrainz::Server::Data::ArtistType->_columns	0.00000
MusicBrainz::Server::Data::ReleaseGroupType->_columns	0.00000
MusicBrainz::Server::Data::ArtistType->_entity_class	0.00000
MusicBrainz::Server::Data::Link->_columns	0.00000
MusicBrainz::Server::Data::Editor->_id_column	0.00000
MusicBrainz::Server::Data::Editor->_table	0.00000
FreeBSD Test =
FreeBSD Environment: 9.0-RELEASE, GENERIC kernel, Perl 5.14.2 (built from ports)

First Operation: 579.662ms
Key	Value
MusicBrainz::Server::Data::Search->external_search	0.18266
MusicBrainz::Server::Data::Country->_get_by_key	0.02097
MusicBrainz::Server::Data::FileCache->manifest_files	0.01045
MusicBrainz::Server::Data::Search->schema_fixup	0.00560
MusicBrainz::Server::Data::Country->_new_from_row	0.00099
MusicBrainz::Server::Data::Country->find_by_code	0.00046
MusicBrainz::Server::Data::Country->_table	0.00008
MusicBrainz::Server::Model::MB->context	0.00006
MusicBrainz::Server::Data::Country->_columns	0.00006
MusicBrainz::Server::Data::RateLimiter->check_rate_limit	0.00005
MusicBrainz::Server::Data::Country->_column_mapping	0.00004
MusicBrainz::Server::Data::Country->_entity_class	0.00004
MusicBrainz::Server::Data::RateLimiter->get_socket	0.00003
MusicBrainz::Server::Data::Artist->_entity_class	0.00002

Second Operation: 773.972ms
Key	Value
MusicBrainz::Server::Data::ReleaseGroup->find_by_artist	0.33772
MusicBrainz::Server::Data::CoreEntity->_new_from_row	0.02965
MusicBrainz::Server::Data::EntityTag->find_top_tags	0.02328
MusicBrainz::Server::Data::FileCache->manifest_files	0.01057
MusicBrainz::Server::Data::ArtistCredit->load	0.00660
MusicBrainz::Server::Data::ReleaseGroupType->load	0.00631
MusicBrainz::Server::Data::Relationship->_load	0.00572
MusicBrainz::Server::Data::Artist->is_empty	0.00483
MusicBrainz::Server::Data::Relationship->_new_from_row	0.00425
MusicBrainz::Server::Data::Editor->_get_by_keys_append_sql	0.00327
MusicBrainz::Server::Data::Editor->load_preferences	0.00286
MusicBrainz::Server::Data::CoreEntity->_get_by_keys_append_sql	0.00207
MusicBrainz::Server::Data::ReleaseGroupSecondaryType->load_for_release_groups	0.00206
MusicBrainz::Server::Data::EntityTag->find_tag_count	0.00205
MusicBrainz::Server::Data::Entity->_new_from_row	0.00205
MusicBrainz::Server::Data::IPI->find_by_entity_id	0.00181
MusicBrainz::Server::Data::Editor->_new_from_row	0.00175
MusicBrainz::Server::Data::Artist->load_meta	0.00151
MusicBrainz::Server::Data::LinkType->load	0.00133
MusicBrainz::Server::Data::ReleaseGroup->_new_from_row	0.00132
MusicBrainz::Server::Data::Relationship->load_entities	0.00128
MusicBrainz::Server::Data::Artist->get_by_ids	0.00126
MusicBrainz::Server::Data::Link->load	0.00122
MusicBrainz::Server::Data::ArtistCredit->get_by_ids	0.00102
MusicBrainz::Server::Data::LinkType->get_by_ids	0.00069
MusicBrainz::Server::Data::Link->get_by_ids	0.00065
MusicBrainz::Server::Data::Artist->get_by_gid	0.00054
MusicBrainz::Server::Data::Relationship->load_subset	0.00048
MusicBrainz::Server::Data::ArtistType->get_by_ids	0.00045
MusicBrainz::Server::Data::URL->_entity_class	0.00044
MusicBrainz::Server::Data::ReleaseGroup->_column_mapping	0.00043
MusicBrainz::Server::Data::Editor->load	0.00039
MusicBrainz::Server::Data::ArtistType->load	0.00035
MusicBrainz::Server::Data::ReleaseGroupType->get_by_ids	0.00031
MusicBrainz::Server::Data::EntityTag->_new_from_row	0.00027
MusicBrainz::Server::Data::Country->get_by_ids	0.00026
MusicBrainz::Server::Data::Country->load	0.00026
MusicBrainz::Server::Data::Gender->load	0.00025
MusicBrainz::Server::Data::Gender->get_by_ids	0.00025
MusicBrainz::Server::Data::ReleaseGroup->_entity_class	0.00023
MusicBrainz::Server::Data::URL->_new_from_row	0.00021
MusicBrainz::Server::Data::URL->_column_mapping	0.00016
MusicBrainz::Server::Data::CoreEntity->get_by_ids	0.00013
MusicBrainz::Server::Data::IPI->load_for	0.00012
MusicBrainz::Server::Data::Editor->get_by_ids	0.00011
MusicBrainz::Server::Data::Editor->_get_by_keys	0.00008
MusicBrainz::Server::Data::IPI->type	0.00008
MusicBrainz::Server::Model::MB->context	0.00007
MusicBrainz::Server::Data::Artist->annotation	0.00007
MusicBrainz::Server::Data::URL->get_by_ids	0.00006
MusicBrainz::Server::Data::Artist->get_by_id	0.00006
MusicBrainz::Server::Data::RateLimiter->check_rate_limit	0.00005
MusicBrainz::Server::Data::EntityTag->tag_table	0.00005
MusicBrainz::Server::Data::Link->_id_cache_prefix	0.00005
MusicBrainz::Server::Data::CoreEntity->_get_by_keys	0.00004
MusicBrainz::Server::Data::ArtistCredit->_id_cache_prefix	0.00004
MusicBrainz::Server::Data::EntityTag->type	0.00004
MusicBrainz::Server::Data::URL->_get_by_keys_append_sql	0.00004
MusicBrainz::Server::Data::Artist->tags	0.00004
MusicBrainz::Server::Data::URL->_get_by_keys	0.00003
MusicBrainz::Server::Data::Country->_id_cache_prefix	0.00003
MusicBrainz::Server::Data::URL->_id_column	0.00003
MusicBrainz::Server::Data::LinkType->_id_cache_prefix	0.00003
MusicBrainz::Server::Data::CoreEntity->_column_mapping	0.00003
MusicBrainz::Server::Data::Editor->_column_mapping	0.00003
MusicBrainz::Server::Data::Artist->_id_cache_prefix	0.00003
MusicBrainz::Server::Data::RateLimiter->get_socket	0.00003
MusicBrainz::Server::Data::Artist->ipi	0.00003
MusicBrainz::Server::Data::IPI->_columns	0.00002
MusicBrainz::Server::Data::IPI->_table	0.00002
MusicBrainz::Server::Data::ReleaseGroupType->_id_cache_prefix	0.00001
MusicBrainz::Server::Data::ReleaseGroup->_table	0.00001
MusicBrainz::Server::Data::ArtistType->_id_cache_prefix	0.00001
MusicBrainz::Server::Data::Gender->_id_cache_prefix	0.00001
MusicBrainz::Server::Data::URL->_columns	0.00001
MusicBrainz::Server::Data::Editor->_columns	0.00001
MusicBrainz::Server::Data::ReleaseGroup->_columns	0.00001
MusicBrainz::Server::Data::URL->_table	0.00001
MusicBrainz::Server::Data::CoreEntity->_id_column	0.00001
MusicBrainz::Server::Data::Editor->_id_column	0.00001
MusicBrainz::Server::Data::Editor->_entity_class	0.00001
MusicBrainz::Server::Data::Editor->_table	0.00001